Multi-Tenant Chat Moveworks Setup Guide
Overview
This guide explains how to enable users to access the same Moveworks bot from multiple Teams tenants or Slack instances within a single Moveworks organization.
Example Use Case: Connect Moveworks Commercial (Prod US) to both Azure Commercial and a separate Azure tenant (e.g., GCCH) simultaneously.
Critical Considerations
1. Identity Resolution
Users must be joinable across tenants using a single key to ITSM/IDAM systems. Choose one approach:
Option A - Employee ID/GUID (Recommended)
- Add
employeeIDor GUID to the new tenant and ITSM - Use this consistent identifier for joining user records
Option B - Email Prefix Standardization with SwapEmailDomainConverter
- Use this when: Chat tenant email domain ≠ ITSM email domain
- Example scenario: Users have
[email protected]in ITSM but[email protected]in Teams tenant - Use
SwapEmailDomainConverterto normalize domains during identity merge - Standardizes email prefixes across tenants (e.g.,
johnfrom[email protected]and[email protected])
Option C - Superset in ITSM
- Use this when: ITSM contains accounts for all email domains used across all chat tenants
- No conversion needed - direct email join works
- ⚠️ Requires ITSM as primary/leftmost identity system
2. Messaging Endpoint
Verify the bot forwards to the correct Moveworks endpoint (Commercial, GCCH, EU, CA) based on your deployment.
Implementation Steps
Replace Graph/Teams with your chat system equivalent as needed.
Step 1: Add MS Teams Connector
Navigation: Setup → Manage Connectors → System Connectors
- Click "Add Connector"
- Select MS Teams connector
- Name it for the second tenant (e.g.,
msteams_tenant_2_name) - Complete the connector configuration
- This connector handles bot messaging for the new tenant
Step 2: Add MS Graph Connector
Navigation: Setup → Manage Connectors → System Connectors
- Click "Add Connector"
- Select MS Graph connector
- Name it for the second tenant (e.g.,
msgraph_tenant_2_name) - Complete authentication and permissions
- This connector handles identity/user data ingestion from the second tenant
Step 3: Add Identity Source for Second Tenant
Navigation: Setup → User Identity → Import Users
- Click "Add Identity Source"
- Select the new MS Graph connector (
msgraph_tenant_2_name) as the source - Configure identity ingestion from the second tenant
- Add the
user_id_info.channel_id_infofor themsteams_tenant_2_nameconnector- Note: The channel will still be
MSTEAMSeven though it's a different tenant
- Note: The channel will still be
- Save the configuration
Step 4: Configure Service Account with New Channel
Navigation: Setup → User Identity → Advanced Settings → Service Account
- Locate the service account user configuration
- Add a new
channel_id_infoentry for the second Teams tenant:
"channel_id_info": [
{
"integration_id": "msteams",
"user_channel_id": "28:{{BOT_ID_INSTANCE_ONE}}"
},
{
"integration_id": "msteams_tenant_2_name",
"user_channel_id": "28:{{BOT_ID_INSTANCE_TWO}}"
}
]- Replace
{{BOT_ID_INSTANCE_ONE}}and{{BOT_ID_INSTANCE_TWO}}with your actual bot IDs - Save the configuration
Step 5: Create Chat Bot Config
Navigation: Setup → Manage Chatbots → Chatbots
- Click "Add New Chatbot"
- Configure for the new Teams tenant
- Select the MS Teams connector created in Step 1 (
msteams_tenant_2_name) - Complete the chatbot configuration
- Important: Note the
integration_idfor use in later steps
Step 6: Configure Identity Conversion (If Needed)
Navigation: Setup → User Identity → Import Users
⚠️ Only required if using Option B (email domains differ between chat tenant and ITSM)
- Locate the identity source for the second tenant
- Add
SwapEmailDomainConverter - Configure the domain mapping:
- Source domain:
subsidiary.com(Teams tenant domain) - Target domain:
company.com(ITSM domain)
- Source domain:
- This ensures
[email protected](Teams) joins with[email protected](ITSM)
Skip this step if:
- Using Option A (Employee ID/GUID join)
- Using Option C (ITSM has all email domains)
- Email domains already match between chat tenant and ITSM
Step 7: Validate Roster
Navigation: Setup → User Identity → View Users
- Search for test users from each tenant
- Verify expected users in each tenant have a valid
channel_idfor each integration - Confirm both
integration_idvalues appear in user records - Verify identity ingestion ran correctly
Step 8: Configure Notification Routes
Navigation: Setup → AI Assistant → Notification Routes
- Set bot channel preference order
- Priority order matters: List most-restricted tenant first
- Example: Tenant 2 first (subset of users), then Tenant 1 (all users)
- The system will notify users on the first available channel according to this priority
Step 9: Update Launch Communications
Navigation: Setup → AI Assistant → Employee Communications
- Configure route preferences using
integration_id - Set up outbound messaging for both tenants
- Test outbound notifications to both tenants
Validation Checklist
Use this checklist to ensure all configuration steps are complete:
- MS Teams connector added for second tenant
- MS Graph connector added for second tenant
- Identity source configured in Import Users for second tenant
- Service account updated with new
channel_id_infoentry - Chat Bot config created with unique
integration_id - Identity conversion configured (only if email domains differ)
- Roster shows users with both channel IDs
- Notification routes prioritized correctly
- Test inbound messages from both tenants
- Test outbound notifications to both tenants
Common Issues & Troubleshooting
| Issue | Potential Cause | Solution |
|---|---|---|
| Bot doesn't respond in Tenant 2 | Incorrect messaging endpoint or integration_id | Verify messaging endpoint configuration and confirm integration_id matches in Chat Bot config |
| Users not found | Identity merge failure | Verify identity conversion settings and check roster merge configuration |
| Wrong bot receives notifications | Incorrect notification route priority | Review notification route priority order - most restrictive tenant should be first |
| Identity merge failures | Missing or incorrect SwapEmailDomainConverter | Confirm SwapEmailDomainConverter is configured if email domains differ between systems |
| Missing channel IDs | Service account not updated | Verify service account has channel_id_info entries for both tenants |
| Service account messages fail | Incorrect integration_id or bot_id | Confirm service account channel_id_info includes correct integration_id and bot IDs |
Additional Resources
- MS Teams Connector Documentation
- MS Graph Connector Documentation
- Identity Resolution Best Practices
- Notification Routes Configuration
Support
If you encounter issues not covered in this guide, please contact Moveworks Support with:
- Screenshots of your connector configurations
- Roster validation results
- Error messages or logs
- Test user examples from both tenants
Updated about 2 hours ago