> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rallied.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Teams

> Give employees a white-labeled IT helpdesk inside Microsoft Teams: a 1:1 intake bot that files PSA tickets and a dedicated named chat for every ticket.

The Microsoft Teams integration puts your helpdesk inside your clients' Teams. Employees describe their problem in a 1:1 chat with a bot that carries **your brand**, and the agent files the ticket in your PSA. Every ticket gets its own named group chat where the requester and your technicians talk through the ticket without leaving Teams.

<Note>
  Microsoft Teams is connected in **MSP Settings → Integrations**. Its configuration (branding, app package, ticket intake routing, and tenant links) lives on the integration's detail page and is also available from **MSP Settings → Teams**.
</Note>

## Prerequisites

* A connected PSA that supports ticket intake. Teams intake currently files tickets in **ConnectWise Manage**.
* The **Microsoft 365 Tenant ID** of each client you want to enable. The client's admin finds it in the Microsoft Entra admin center under **Overview → Tenant ID**.
* A client tenant admin willing to upload a custom app to their Teams app catalog.

## How to connect

Connecting the integration is the ON switch for the entire Teams surface: the app package, branding, tenant links, message intake, and ticket chats all require it.

<Steps>
  <Step title="Connect the integration">
    In **MSP Settings → Integrations**, find the Microsoft Teams card and click **Connect**. There are no credentials to enter. The bot identity is provided by Rallied.
  </Step>

  <Step title="Set your branding">
    Go to **MSP Settings → Teams** and click **Branding**. Set the app display name (defaults to your MSP name), an accent color, and your logo. One logo upload produces both icon sizes Teams requires (192×192 color and 32×32 outline).
  </Step>

  <Step title="Download the app package">
    Click **Download app**. Rallied generates one white-labeled Teams app package (a `.zip`) that carries your brand to every client tenant. You're prompted for a package version. Bump it whenever you re-upload an updated package.
  </Step>

  <Step title="Link each client's tenant">
    In the client table on the Teams page, click **Link tenant** and paste that client's Microsoft 365 Tenant ID. The row shows **Linked — awaiting install**. Linking is what ties messages from that tenant to the right client. Rallied drops messages from unlinked tenants.
  </Step>

  <Step title="Have the client's admin install the app">
    Send the app package to the client's Teams admin. They upload it to their tenant's app catalog and roll it out to their users. When the app is installed, the row flips to **Installed** automatically.
  </Step>
</Steps>

<Note>
  If you change branding later, re-download the package with a higher version number and have each client's admin re-upload it to their catalog.
</Note>

## Ticket intake routing

The **Ticket intake** section on the Teams configuration page controls where tickets filed from Teams land in your PSA:

* **Board** — the board where the agent creates new Teams tickets. With ConnectWise Manage connected, you pick the board from a live list of your service boards.
* **New-ticket status** (optional) — the status new Teams tickets start in. Leave it on **Board default** to use the board's own default, or pick a status to keep Teams intake tickets in a dedicated status. Changing the board clears the status pick, since statuses belong to a board.

Click **Save intake routing** to apply. Saving requires the `integrations:write` capability. Read-only users see the saved values but can't change them.

## How employees use it

### Filing a ticket

Employees open a 1:1 chat with your branded bot and describe their problem. The agent asks follow-up questions until it knows the affected system, the symptom, and the impact, then files a ticket in your PSA. The requester's identity comes from their verified Teams sign-in and is attached as the ticket contact automatically. The bot's first reply in every conversation includes an AI disclosure.

Employees can also ask "what tickets do I have?" in the 1:1 chat to list their own open Teams-filed tickets.

### The per-ticket chat

When a ticket is created, the bot opens a dedicated group chat named `#<ticket number> — <summary>` with exactly two members: the bot and the requester. The chat is a live, two-way bridge to the ticket:

* **Requester writes in the chat** — the bot posts the message to the ticket as a client-facing note, attributed to the requester.
* **A technician or the agent posts a client-facing note on the ticket** — the note text appears in the chat, verbatim. Internal notes are never relayed.
* **The ticket is closed** — the chat is renamed to `[Closed] #<ticket number> — <summary>` and the bot posts a closing message.

## What the agent can do

The Teams tools are restricted to the conversation the agent was woken for. It cannot message other users or other conversations.

| Tool                  | Default policy | Description                                        |
| --------------------- | -------------- | -------------------------------------------------- |
| `teams-reply`         | Auto           | Post a message into the current Teams conversation |
| `teams-create-ticket` | Auto           | File a PSA ticket from the 1:1 intake conversation |
| `teams-my-tickets`    | Auto           | List the requester's own open Teams-filed tickets  |

## Pausing Teams for a client

Each client row on the **MSP Settings → Teams** page has a **Kill switch**. Enabling it pauses all Teams traffic for that client: inbound messages are dropped until you click **Re-enable**. Other clients are unaffected.

Disconnecting the Microsoft Teams integration from **MSP Settings → Integrations** shuts down message intake and ticket-chat relays for **all** tenants at once.

## Security model

* Every Teams message carries the Microsoft 365 tenant ID of the organization it came from. Rallied resolves that tenant ID against your tenant links to identify the client. Rallied drops messages from unknown or unlinked tenants and never auto-provisions them.
* The agent only sees and lists tickets belonging to the authenticated requester. Ticket listing is scoped server-side and fails closed.
* Only client-facing notes are relayed into ticket chats. Internal technician notes stay in the PSA.
