
HaloCRM Guides
Microsoft Teams Integration
In this guide we will cover:
- What is the Microsoft Teams Integration?
- Main Configuration
- Communicating with Users from Halo using Teams
- Communicating in Teams using Chatbots
- Prescence Notifications
- Importing Shifts from Teams
Related Guides:
- Call Pop-Up for Microsoft Teams
- Embedding your Halo Self Service Portal into Microsoft Teams
- Embedding your Halo Self Service Portal into Microsoft Teams with SSO
- Pushing the Teams Embedded Self Service Portal to Customers Microsoft Teams Tenants
- Microsoft TeamsBot
What is the Microsoft Teams Integration?
Microsoft Teams can be integrated with Halo to trigger Teams notifications, use chatbots and import shifts.
Main Configuration
To enable the Microsoft Teams integration, go to Configuration > Integrations, and enable the module using the plus icon in the top right hand corner of the Microsoft Teams menu icon. Once the module has been enabled, click the menu icon to begin configuring it.
This integration allows you to post notifications to channels in Microsoft Teams, just like you would send notifications via email to your technicians.
The first configuration step requires setting up a workflow for a Channel in Microsoft Teams. To do this, find a channel you'd like to send notifications to, hover over the three dots and select "Workflows".
Fig 1. Workflows option.
On the Workflows screen, look for "Post to a channel when a webhook request is received".
Fig 2. Webhooks on the workflow screen.
Once you have found the option, click on it and choose a sensible name for your workflow and click Next, confirm the channel details and create the workflow. This will generate you a new URL for your workflow.
Fig 3. Workflow URL.
Take a copy of the unique webhook URL present in the dialog and select Done, and then head back to the Microsoft Teams module in your Halo application.
The next step is configure an outgoing webhook in Halo. Within the Microsoft Teams module there are three buttons. The first two buttons allow you to view all of your current Webhooks that you have created, and the second one takes you straight to the Webhook creation screen.
Fig 4. Webhook options.
Clicking create Webhook will default the Webhook Type of the new Webhook to "Microsoft Teams Webhook". This option is essential, otherwise the notification will fail to post to Teams. The URL obtained from the Teams Workflow in the earlier step should be copied into the Payload URL field. The configuration of the Webhook events is not covered in this guide.
Fig 5. Configuring the webhook.
At this stage, there may be an error encountered around the attachment endpoint in Halo not being added to the payload sent to MS Teams. If this is the case you will need to try selecting a different output for the workflow in MS Teams.
Fig 6. Output for workflow.
When the Webhook is triggered, the server program running in the background will send the notification to your Teams channel. A button will be available allowing you to easily open that ticket in your Agent web application in a new browser tab.
Fig 7. Webhook in use.
The details part of the notification can be customised to include specific information from the ticket that you're being notified about, the same way that this information gets added to emails. To do this, click the View Templates button in the Microsoft Teams module.
Fig 8. Notification templates.
Choose the template that corresponds to your Webhooks events, and customize the details for that template.
Fig 9. Choosing a template.
Communicating with Users from Halo using Teams
Halo integrates with various MS Teams communication methods, allowing agents to use MS Teams' communication functionalities from Halo. Agents can use the following communication methods from a ticket in Halo:
- Call a user in MS Teams
- Direct Message a User in MS Teams
- Create New Teams chats and message users on Teams from within the Halo ticket
Call Users in MS Teams
Agents can call users in Microsoft teams from Halo, using a shortcut button. To enable this functionality head to the 'Call Management' tab within the integration setup and check the option 'Show an option underneath a User's email address to call them directly via Microsoft Teams'.
Fig 10. Call management options.
When enabled, a button will appear under the end user details called 'Call on Microsoft teams'. Using this button will open up a call screen in Teams. If you would like this button to also appear on opportunity tickets enable 'Show an option underneath an Opportunity User's email address to call them directly via Microsoft Teams' too.
Fig 11. Call on Microsoft Teams
Ensure you set the 'Method used to call User' you would like to use too.
If you would like to track when agents are calling users in teams enable 'Add an action when calling a User via teams'. This will log an action on the ticket automatically each time this button is used.
Direct Message a user in MS Teams
You can also add an option on tickets to message a user directly on teams, this is enabled in the "Direct Messaging" tab. Using the checkbox 'Show an option underneath a User's email address to message them directly via Microsoft Teams'.
Fig 12. Direct Messaging Tab.
When enabled a button will appear under the end user details on the ticket, when used agents will be re-directed to teams.
Fig 13. Button to message directly on teams
You can configure a default message to be sent to users, this will populate the chat field automatically for agents, but they will be able to edit this before sending. The default message is configured in the 'The default message when messaging users on teams' field under the MS Teams setup page in Halo. You can enter variables in the field here to pull information from Halo into the chat automatically. For example, the variable $-symptom will pull through the summary of the ticket.
To track each time agents have sent a message to a user in teams enable the setting 'Add an action when Messaging a User via teams' under the MS team setup page (fig 12). When enabled each time agents use the 'Message Directly on Teams' button an action will automatically be added to the ticket.
Create a New MS Team chat from Halo
To enable the ability to create new MS Teams chats from within Halo head to the 'Chat management' tab on the integration setup page in Halo. Here, enable 'Enable chat management and messaging chats from Halo'.
Creating new chats is different to directly messaging users as this allows you to create a chat with various users and agents rather than a single user. It also allows you to respond to chat messages from within Halo, rather than having to be re-directed to Teams.
Fig 14. Creating an application.
Once enabled, you will see you need to create and enter the details of an Azure application. This is used to authorise the creation of new chats in Teams.
The application requires a mixture of delegate and application permissions. The permissions required can be found on your integration setup page (shown in figure 14).
Chat.Read.All
To improve the security of the application this permission does not need to be granted, however, there may be limitations/alternative permissions to consider:
- If not granting the permission the only limitation with this option is you can only create subscriptions to chats you are a part of.
- The delegated Chat.Read permission can be granted in place of Chat.Read.All if you are on versions 2.202+ of Halo.
When authorising the application you will need to use an account with administrator access/permissions.
Once you have configured and authorised your application you can set a default name used for new chats under the 'Default name for new chats' field. Variables can be entered here to have information from the ticket be used as the default chat name. The name set here is used as the global default, but can be overridden for each ticket type, allowing you to have different chat names for each ticket.
Then, you will need to turn on the ability to see and create new chats at Ticket Type level. This is done under configuration > tickets > ticket types > select a ticket type > settings > 'Allow Microsoft Teams chats to be created from this Ticket Type'.
Fig 15. Enable MS Teams chats to be created from this ticket type.
Here you can also specify a default name for new chats for this ticket type. This will auto-populate on the creation screen, which overrides the global setting found in the integration setup screen.
Show Microsoft Teams chats as tabs when viewing a Ticket: When enabled the chat created from the ticket will show in a new ticket tab. Allow the agent to interact and view the Teams chat from this tab against the ticket.
The button 'Create Microsoft Teams Chat' will use the End-User of the Ticket: Here, you can set whether the end user of the ticket is automatically assigned to the chat created. If enabled when a new chat is created from a ticket, the end user will be added to the chat, removing the agent's ability to choose which users to add to the chat. Note, if this setting is enabled, the option to create a MS Teams chat against the ticket will only appear if the end user of the ticket has been imported into your Halo from Azure. As this is required to match the user to a the correct user in Teams.
How to Create a Chat from a ticket
To create the chat from within a Ticket, hover over the quick action menu and select the Create Microsoft Teams Chat option. Note that this option will be available on the Ticket regardless of whether the above setting is enabled.
Fig 16. Creating chat from a ticket.
If you are using the 2025 UI, a new chat can be created using the button 'Create Microsoft Teams chat' under the end user details.
This will display an input screen where you can configure your new chat.
Fig 17. Creating a chat.
The user who authorized the integration will be automatically added as an owner of the chat during the creation. Only user(s) imported via the Azure Active Directory integration can be added as a member.
Once the chat is created, a new tab will display on the ticket. As part of the chat creation, a subscription to the chat will be created so that any new messages added to the chat from within Microsoft Teams will be automatically imported.
Using the plus icon in the top right hand corner, new messages can be sent to the chat from Halo. Any message sent from Halo will show in the message list as being sent by the user who authorized the integration, but a sub header showing the agent who performed the action is also shown for auditability.
Fig 18. Chat on a ticket.
As an alternative to viewing chats within a dedicated tab against the ticket, you can also view and manage chats using a ticket dashboard.
Closing Off Chats when the Ticket is Closed (v2.206+)
From v2.206+ if there is a Teams chat open against the ticket in Halo, when the ticket in Halo is closed off, the Teams chat will automatically be closed too. With a closure message sent into the chat to inform the user.
This message will send automatically when the ticket in Halo is moved into the 'Closed' or 'Resolved' status.
To customise the closure message that is sent into the Teams chat when the ticket is closed you will need to make a new email template with the 'Email template use' 'Microsoft Teams'. Multiple messages can be configured, each set to be used on different ticket types if required.
First, head to Configuration > Billing > Invoice Creation and enable 'Allow selection of invoice email template when sending an invoice'.
Now, head to Configuration > Email > Email Templates > New. In the Email Body of the template enter the message you would like to be posted into the Teams chat. The message will be posted in plain text so avoid formatting the template.
Fig 19. Template for Teams chat closure message.
Once saved, head to Configuration > Integrations > Microsoft Teams > Chat Management, in the 'Chat closure message when Ticket is closed' choose the global default closure message.
Fig 20. Global default for Teams chat closure message.
If you would like a different closure message to be used based on the ticket type the chat is against, a chat closure message override can be set on each ticket type.
Head to Configuration > Tickets > Ticket Types > Settings > Microsoft Teams Chats section, under 'Chat closure message when Ticket is closed' choose which closure message should be used for this ticket type. This will override the global default.
Fig 21. Set chat closure message per ticket type.
Manage Chats using Dashboards
Managing chats through a dashboard is beneficial when creating multiple teams chats from a single ticket, as it allows you to view all chats in a single tab.
To set this up, add the widget type called Microsoft Teams Chats to a custom Ticket dashboard.
Fig 22. Dashboard with a chat.
The widget will display all chats created from the Ticket in separate tabs, but all within the widget. A new chat can be created when viewing the widget by clicking the plus tab option. The functionality within the widget is identical to the Ticket Tabs method. To configure ticket dashboards, check out this guide: Ticket Dashboards
A background service will renew any chat subscriptions that are close to expiry on open tickets. Once a ticket is closed, the subscription will no longer be renewed and new messages will no longer be imported from Microsoft Teams.
Communicating in Teams using Chatbots
Agent Bot
The tab for configuring a Microsoft teams bot has a separate guide: Microsoft TeamsBot.
End-User Chat (Chatbot)
End-user chat can be enabled in Microsoft Teams so that end-users can communicate with a chatbot that sits in Microsoft Teams based on a chat profile that you have created in Halo.
Fig 23. General settings.
The chat profile you choose must allow access to anyone (must not be restricted to authenticated users only).
It is possible to add your own branding to the chatbot, as well as personalize the welcome message that is sent to an end-user when they install the app in Microsoft Teams from your organization's app library. In addition to this, you can also modify the help command's text, allowing you to personalize the chatbot's instructions as well as include other contact information that may be useful to the user if they don't get the response they need from the chatbot.
Fig 24. App configuration.
To add your own branding to the chatbot, you can use the manifest generator (click the Create Manifest button). This will allow you to add two descriptions and two logos that will be used for the chatbot in Microsoft Teams and visible to your end users.
Fig 25. Branding.
Saving this input screen will download a manifest.zip file. This zip file can be manually installed into Microsoft Teams for personal use, or for your entire organization. To install the app, open Microsoft Teams and navigate to Apps > Manage your apps > Upload an app and select your desired option. You will then be prompted to select your manifest.zip file. Please note that Microsoft Teams will reject any naming variation of this folder, so the name must be exactly manifest.zip.
Once selected, you will be prompted to install the app.
Fig 26. Installing the app.
After installation of the app is successful, the chatbot will send you the configured welcome message. If, for whatever reason, the chatbot is not successful in recognising your Halo instance, a default welcome message will be displayed.
Fig 27. Halo Chat Bot.
There are three bot commands available to the user: the help command, Start a new conversation, or End the conversation.
Fig 28. Bot commands.
Once a new conversation is started, the user can begin conversing with the chatbot following the chat profile you have created.
Fig 29. Using the chatbot.
The user can end the conversation at any point by using the End the conversation command.
All current chat profile functionality is supported in the Microsoft Teams chatbot, including speaking to an agent via live chat. In the above chat, if the user selects I'd like to speak to someone, the chatbot will attempt to connect them to an available agent. The agent can then communicate to the user in Microsoft Teams through the chatbot using live chat in Halo.
Fig 30. Agent answering the chat.
Fig 31. Chat.
Presence Notifications
The following pre-requisites must be met to use this functionality:
- The scheduling service must be enabled.
- The Microsoft Teams integration must be enabled.
- The Microsoft Entra ID integration must be enabled and you must be using it to import at least one agent.
The functionality must first be enabled in the Microsoft Teams integration on the Presence Notifications tab.
Fig 32. Presence notifications.
Once enabled, presence rules can be defined that allow you to determine what a technician's status should be updated to based on the Availability and Activity properties of the Microsoft Teams presence. There is also an option to only apply a rule if the technician is currently online in Halo (requires online presence functionality to be enabled in Halo first).
After configuring the integration at the Microsoft Teams level, additional configuration is required at the Microsoft Entra ID level. The Presence.Read.All (delegated) permission must be added to the Azure app and the option to allow imported agents to use the functionality must be enabled. Note that agents will not be able to subscribe to the notifications until they have been reimported either via the Halo Integrator or manually in the agent web application.
Fig 33. Connecting an application.
Once all configuration steps have been completed, agents can then subscribe to presence notifications individually on the Integrations tab of their profile.
Fig 34. Subscribing an agent to the notifications.
Subscriptions will be renewed automatically when they are due to expire in the next 20 minutes, either during the processing of a new presence notification or via the task scheduler. After receiving and processing the notification, there may be a short delay before the agent's status change is reflected in the top right corner of the application.
Importing Shifts from Teams
If you are using the shifts functionality in Halo you can import your shifts from teams into Halo. Shifts in teams will need to be assigned to a user before they can be imported. The shifts will then be assigned to the respective agent in Halo when imported but the agent must be synced with Microsoft Entra ID and have the setting "Enable shift imports" turned on against their account.
To enable shift imports head to configuration > integrations > Microsoft Teams > shifts tab (this tab will only appear if you have shifts enabled). For more information on shifts and enabling them see our dedicated article here. Enable the setting 'Enable shift imports', this will show the connection details. Now you will need to create an Azure application. Set the authentication method to your preferred method and set the 'Authority' field to 'Microsoft Graph Global service' (This Microsoft API is currently only supported for the Global Service Authority).
Fig 35. Shifts tab.
When setting up your Azure application you will need need to set the redirect URI to be "https:/YOURHALODOMAIN/authcallback" but the specific URI to use can be found on the setup page for the integration in Halo.
The Azure application will need the following Graph API permissions:
- Delegated
- Group.Read.All
- Team.ReadBasic.All
Application
Schedule.Read.All
Schedule.ReadWrite.All
Admin consent will need to be granted for some of these permissions.
Once created add the application details into the setup page in Halo and authorise the application. The additional setup will now be visible.
There are two methods in which shifts can be imported, using webhooks or the integrator.
Before you import any shifts you will need to ensure the agents that you are trying to import shifts for have shift imports enabled. To do this select the 'Enable shift imports for Agents' button on the setup screen, select the team of agents you would like to enable this for, then hit save, this will enable shift imports for all agents in this team.
Note: Agents shifts are being imported for will need to be synced with Microsoft Entra ID. This allows the user of the shift to be matched to the respective agent in Halo. If shifts are not importing for certain agents ensure these agents are syncing with Entra.
Webhooks:
When using webhooks shifts will be imported as soon as they are created, deleted or updated in teams. To create the webhooks for the import add a mapping to the 'Team Mappings; table. By adding a mapping to the table webhooks will be created to automatically import the shifts for this team when any changes are made. In the below example only the shifts for the Documentation and Infrastructure team will be imported.
Fig 36. Team mappings.
Integrator:
To have shifts imported on a scheduled basis using the Halo integrator check 'Enable the Halo Integrator for the Microsoft Teams integration', this will automatically import shifts on a daily basis using the Halo integrator. You can have the integrator enabled in addition to using webhooks as additional assurance that shifts have been imported.
Teams shift groups can also be mapped to a Halo shift type, this allows teams shift groups to be imported with a specified shift type in Halo. To do this add a mapping to the shift type mappings table.
Popular Guides
- Asset Import - CSV/XLS/Spreadsheet Method
- Call Management
- Creating Agents and Editing Agent Details
- Creating API Applications
- Departments and Teams
- Halo Integrator
- Importing Data
- Multiple New Portals with different branding for one customer [Hosted]
- NHServer Deprecation User Guide
- Organisation Basics
- Organising Teams of Agents
- Step-by-Step Configuration Walk Through



