Dynamics 365 Contact Center

Interactive Architecture Map - Configuration & Relationships

πŸ“‹ Architecture Overview

β–Ό

Core Architecture Flow

CHANNELS β†’ WORKSTREAMS β†’ ROUTING RULES β†’ QUEUES β†’ AGENTS

Each layer adds intelligence, context, and control to ensure optimal customer service delivery through AI-powered routing and intelligent work distribution.

Key Layers

🌐 Channels

Entry points for customer engagement across multiple communication mediums

πŸ”„ Workstreams

Containers that enrich, route, and configure work item behavior

πŸ“ Routing Rules

Intelligent classification and route-to-queue decision logic

πŸ“₯ Queues

Collections that organize work items for distribution

πŸ‘₯ Agents

Service representatives who handle customer interactions

πŸ€– AI Features

Copilot assistance, sentiment analysis, and intelligent routing

πŸ—ΊοΈ Visual Architecture Flow

β–Ό
πŸ“± CHANNELS - Customer Engagement Layer
πŸ“ž
Voice
PSTN Calls
πŸ’¬
Chat
Live Chat
πŸ“±
SMS
Text Messages
πŸ“²
Social
FB/WhatsApp
πŸ‘”
Teams
MS Teams
πŸ“‹
Records
Cases/Emails
⬇
πŸ”„ WORKSTREAMS - Routing & Configuration Layer
πŸ”„
Messaging Workstream
Chat, SMS, Social, Teams
πŸ“ž
Voice Workstream
Phone Calls (Push Only)
πŸ“
Record Workstream
Cases, Emails, Records
⬇
🎯 ROUTING RULES - Intelligent Routing Layer
🏷️
Classification Rules
Categorize & Add Context
🎯
Route-to-Queue Rules
Condition-Based Routing
πŸ›‘οΈ
Fallback Queue
Safety Net
⬇
πŸ“₯ QUEUES - Work Distribution Layer
πŸ“₯
Messaging Queue
Chat, SMS, Social
πŸ“ž
Voice Queue
Phone Calls
πŸ“‹
Record Queue
Cases & Emails
⬇
βš™οΈ ASSIGNMENT ALGORITHM - Evaluation Layer
🎯
Skills
Matching
🟒
Presence
Availability
⚑
Capacity
Workload
⬇
πŸ‘₯ AGENTS - Service Representative Layer
πŸ‘€
Agents / Representatives
Handle Customer Interactions

πŸ“Š Assignment Methods

⚑ Highest Capacity

Routes to agent with most available capacity

πŸ”„ Round Robin

Rotates assignments in order

😴 Least Active

Routes to least recently active agent

βš™οΈ Custom

Rule-based custom assignment

πŸ”— Key Relationships

β–Ό

⬇️ Top-Down Relationships (Architecture Flow)

Channel
β†’
Workstream
Many-to-One

1. Channel β†’ Workstream (Many-to-One)

Forward: Multiple channels of the SAME type can share one workstream

Example: 3 chat channels β†’ 1 messaging workstream

Reverse: βœ… A workstream can have MULTIPLE channels attached (of the same type)

Phone Number
β†’
Voice Channel
β†’
Workstream
Many-to-One

2. Phone Number β†’ Voice Channel β†’ Workstream (Many-to-One)

Forward: Each phone number is associated with exactly ONE voice channel, which belongs to ONE workstream

Constraint: Phone numbers must have inbound calls enabled and cannot be shared across workstreams

Reverse: βœ… A workstream CAN have MULTIPLE voice channels, each with a different phone number

Use Case: Multilingual support - configure multiple voice channels with different phone numbers for different languages (e.g., Spanish number, German number, French number all in one workstream)

Workstream
β†’
Queues
One-to-Many

3. Workstream β†’ Queues (One-to-Many)

Forward: One workstream can route to multiple queues via route-to-queue rules

Required: Must have one fallback queue as safety net

Reverse: βœ… A queue CAN receive work from MULTIPLE workstreams (of matching channel type)

Example: A "VIP Voice Queue" can receive calls from both "Premium Support Workstream" and "Executive Support Workstream"

Queue
β†’
Agents
Many-to-Many

4. Queue β†’ Agents (Many-to-Many)

Forward: Queues can have multiple agents as members

Reverse: βœ… Agents CAN be members of MULTIPLE queues

Distribution: Based on assignment method and availability

Example: Agent John can be in "Voice Queue", "Chat Queue", and "VIP Queue" simultaneously

⬆️ Bottom-Up Relationships (Reverse Flow)

Agent Perspective:

  • βœ… An agent can be a member of multiple queues
  • βœ… An agent receives work from all queues they belong to
  • βœ… Work assignment depends on capacity, skills, and presence across all queues
  • πŸ“Š Agents can view work items from all their queues in the Omnichannel Agent Dashboard
  • Example: Agent Sarah in "Voice Queue", "VIP Chat Queue", and "Email Queue"

Queue Perspective:

  • βœ… A queue can receive work from multiple workstreams (matching channel type)
  • βœ… A queue can have multiple agents as members
  • βœ… A queue can be a fallback queue for multiple workstreams
  • ❌ A queue CANNOT receive work from workstreams of different channel types
  • Example: "Premium Support Voice Queue" receives calls from both "Executive Support Workstream" and "VIP Customer Workstream"

Workstream Perspective:

  • βœ… A workstream can have multiple channels of the same type attached
  • βœ… A workstream can route to multiple queues
  • βœ… A workstream can use the same queue as other workstreams
  • βœ… A voice workstream can have MULTIPLE phone numbers through multiple voice channels
  • πŸ’‘ Common use case: Multiple voice channels with different phone numbers for multilingual support

Channel Perspective:

  • πŸ“Œ A channel belongs to ONE workstream (based on configuration flow)
  • βœ… Multiple channels of the same type can share one workstream
  • Example: 3 different chat widget channels β†’ all in 1 messaging workstream

πŸ”’ Type Constraints

Workstream β†’ Channel Type Constraint

  • Messaging workstream β†’ Messaging queues only
  • Voice workstream β†’ Voice queues only
  • Record workstream β†’ Record queues only
  • ❌ Cross-type routing NOT allowed
  • βœ… Multiple workstreams of the same type CAN share the same queue

Workstream Type β†’ Distribution Mode

  • Voice: Push mode ONLY
  • Messaging: Push or Pick mode
  • Record: Push or Pick mode
  • ⚠️ Mode CANNOT be changed after creation

πŸ“Š Relationship Summary Table

From To Cardinality Can Reverse?
Channel Workstream Many-to-One βœ… Yes (One workstream β†’ Many channels)
Phone Number Voice Channel One-to-One ❌ No (Each phone number β†’ One voice channel only)
Voice Channel Workstream Many-to-One βœ… Yes (One workstream ← Many voice channels with different phone numbers)
Workstream Queue One-to-Many βœ… Yes (One queue ← Many workstreams)
Queue Agent Many-to-Many βœ… Yes (fully bidirectional)

🌐 Channels 7 Types

β–Ό

Available Channel Types

πŸ“ž Voice Channel

  • PSTN calling via Azure Communication Services
  • Real-time AI transcription
  • Sentiment analysis during calls
  • Phone numbers (1:1 with workstream)

πŸ’¬ Chat Channel

  • Live chat support
  • Web widget integration
  • Persistent chat capability
  • Context variables support

πŸ“± SMS Channel

  • Azure Communication Services
  • Twilio integration
  • Two-way messaging
  • Representative affinity

πŸ“² Social Channels

  • Facebook Messenger
  • WhatsApp (via Twilio)
  • Apple Messages for Business
  • LINE messaging

πŸ‘” Microsoft Teams

  • Native Teams integration
  • Collaboration features
  • Expert swarming
  • Consultation capabilities

πŸ”§ Custom Messaging

  • Custom channel development
  • Direct Line Bot Framework
  • Line-of-business channels
  • Telegram and others

πŸ“‹ Entity Records

  • Cases routing
  • Email management
  • Standard business records
  • Custom entities

Implementation Pattern

Step 1: Establish account requirements with channel provider
Step 2: Configure the workstream in admin center
Step 3: Configure channel and attach to workstream
Step 4: Exchange authentication data (tokens/secrets)

πŸ”„ Workstreams Core Component

β–Ό

Workstream Types

Type Routes Distribution Modes
Messaging Chat, SMS, Social channels, Microsoft Teams Push or Pick
Voice Phone calls (via phone number) Push only
Record Cases, Emails, Records Push or Pick

Work Distribution Modes

πŸ”” Push Mode

  • System automatically routes work items
  • Agents receive message alerts
  • Required for voice workstreams
  • Supports bot integration

🎯 Pick Mode

  • Agents manually select work items
  • From "Open work items" list
  • Agent-controlled workload
  • Not available for voice
⚠️ Important: Work distribution mode CANNOT be changed after workstream creation!

Configuration Options

  • Capacity settings: Unit-based or profile-based
  • Allowed presences: Define which statuses can receive work
  • Skill matching: Exact Match, Closest Match, or None
  • Session templates: Customize agent workspace
  • Agent notifications: Configure alert behavior
  • Context variables: Pass custom data through routing
  • Representative affinity: Same agent handles returning items
  • Auto-close after inactivity: Timeout settings
  • Block capacity for wrap up: Post-work processing time

☎️ Phone Numbers

β–Ό

Phone Number Configuration

Relationship: Phone Number β†’ Voice Channel β†’ Workstream
β€’ Each phone number is associated with exactly ONE voice channel
β€’ Each voice channel belongs to ONE workstream
β€’ βœ… One workstream CAN have MULTIPLE voice channels (each with different phone numbers)

Configuration Steps

Provision: Acquire phone numbers via Azure Communication Services
Enable: Enable inbound calls on the phone numbers
Create Voice Channels: In the workstream, create multiple voice channels (one per phone number)
Associate: Link each phone number to its respective voice channel in the workstream
Configure: Set up language settings and voice profiles for each channel

Multiple Phone Numbers per Workstream

Use Case: Multilingual Support

  • Create multiple voice channels within one workstream
  • Each voice channel has a different phone number
  • Each voice channel configured with a different primary language
  • Example: +1-555-0100 (Spanish), +1-555-0200 (German), +1-555-0300 (French) all in one workstream

Single Phone Number - Multiple Languages

Alternatively, one phone number can support multiple languages with:

  • Primary language (first greeting)
  • Additional language options for customers
  • Hold and wait music configuration per language
  • Voice profile settings (voice, style, speed, pitch) per language
⚠️ Constraints:
  • Only numbers with inbound calls enabled are available
  • Each phone number can only be in ONE voice channel
  • Cannot associate number already linked to another workstream
  • Anonymous calls only supported via Azure Direct Routing
  • Cannot edit or upgrade phone number features after connecting to workstream

πŸ“ Routing Rules

β–Ό

Rule Types

🏷️ Classification Rules

  • Categorize incoming work items
  • Add context and metadata
  • Evaluate customer parameters
  • Enable intelligent routing decisions

🎯 Route-to-Queue Rules

  • Condition-based routing logic
  • Priority-based assignments
  • Skill-based matching
  • Multiple rules per workstream

Fallback Queue

Safety Net Mechanism: Every workstream must have a fallback queue that receives work items when:

  • No route-to-queue rules match
  • Classification errors occur
  • Route-to-queue rule errors occur

Default Routing Behavior

For simple routing scenarios, no custom rules are required:

Voice: All incoming calls β†’ Default voice queue β†’ Round robin assignment
Messaging: All conversations β†’ Default messaging queue β†’ Round robin assignment
Records: All records β†’ Default entity queue β†’ Round robin assignment

πŸ“₯ Queues

β–Ό

Queue Types

Queue Type Workable Items Purpose
Messaging Queue Chat, SMS, Social messages Route live conversations
Voice Queue Inbound/outbound calls Route phone calls
Record Queue Cases, emails, records Route entity records
⚠️ Type Constraint: Queue type must match workstream channel type. Cross-type routing is NOT allowed. For example, chat conversations can only be transferred to messaging queues.

Assignment Methods

⚑ Highest Capacity

Routes to agent with most available capacity, considering skills and presence

πŸ”„ Round Robin

Rotates assignments based on queue membership order, updates based on assignment history

😴 Least Active

Routes to agent who has been least active recently

βš™οΈ Custom Assignment

Build custom rules using rulesets for priority, severity, and capacity

Queue Configuration

  • Queue Priority: Numeric priority (lower number = higher priority)
  • Operating Hours: Schedules and time zones
  • Overflow Management: Redirect work when thresholds exceeded
  • Agent Membership: Assign agents to queues
  • Default Queues: System-defined with all agents included

Default Queues (System-Defined)

Default Messaging Queue

All agents included by default for chat, SMS, and Teams

Default Voice Queue

All agents included by default for phone calls

Default Entity Queue

All agents included by default for cases and records

πŸ‘₯ Agents / Representatives

β–Ό

Agent Configuration

πŸ“‹ Queue Assignments

Agents can be members of multiple queues. Work is distributed based on queue membership and availability.

⚑ Capacity Profile

Defines workload capacity - unit-based or profile-based. Controls how many concurrent work items an agent can handle.

🎯 Skills

Skill-based routing matches work items to agents with required skills using exact or closest match algorithms.

🟒 Presence Status

Available, Busy, Away, Do Not Disturb, etc. Only allowed presences receive work assignments.

Agent Experience

Mode Experience Use Case
Push Mode Receives auto-assigned work with notifications Voice, urgent messaging, high-volume
Pick Mode Manually selects from "Open work items" Cases, emails, specialized work

Advanced Features

  • Representative Affinity: Same agent handles returning work items (enabled by default for persistent channels)
  • Wrap-up Time: Capacity blocked after completing work (configurable: always, never, or custom duration)
  • Channel-specific Capacity: Different capacity limits per channel type
  • Multi-channel Support: Handle voice, chat, and records simultaneously based on capacity

Assignment Algorithm Factors

Assignment Decision Considers:
    β”‚
    β”œβ”€ Agent Presence (Available, Busy, DND)
    β”‚
    β”œβ”€ Agent Capacity (current workload vs. max capacity)
    β”‚
    β”œβ”€ Agent Skills (if skill matching enabled)
    β”‚
    β”œβ”€ Queue Membership (agent must be in the queue)
    β”‚
    β”œβ”€ Assignment Method (Highest Capacity, Round Robin, etc.)
    β”‚
    └─ Priority & Routing Rules (from workstream configuration)
                        

πŸ”„ Routing Flow Example

β–Ό

Complete Call Routing Journey

Customer Action: Customer calls +1-555-0100
Phone Number Lookup: Phone Number (+1-555-0100) associated with "Premium Support Voice Workstream"
Classification: Classification Rules evaluate call context (customer type, product, history)
Route-to-Queue Decision:
β€’ Rule 1: If customer = "Premium" β†’ "VIP Voice Queue"
β€’ Rule 2: If product = "Product A" β†’ "Product A Voice Queue"
β€’ No match β†’ "Fallback Voice Queue"
Queue Processing: Queue receives call and applies assignment method (e.g., Highest Capacity)
Agent Evaluation: Assignment algorithm evaluates:
β€’ Agent presence (Available, Busy, DND)
β€’ Agent capacity (current workload vs. max)
β€’ Agent skills (if skill matching enabled)
β€’ Queue membership
Assignment: Call assigned to Agent with highest capacity + matching skills + allowed presence
Agent Notification: Agent receives notification and call appears in workspace with full context
Post-Call: After call ends, agent enters wrap-up time (capacity blocked for configured duration)

πŸ€– AI & Intelligence Features

β–Ό

Unified Intelligent Routing (AI-Infused)

😊 Sentiment Analysis

Real-time emotion detection to route frustrated customers to experienced agents

πŸ“Š Predicted Effort

AI estimates complexity to match work with agent expertise

🎯 Skills Matching

Intelligent matching of required skills to agent capabilities

🟒 Presence Awareness

Real-time availability tracking for optimal assignment

⚑ Capacity Optimization

Dynamic workload balancing across agent pool

πŸ‘€ Customer Parameters

Historical data and customer context evaluation

Agent Copilot Features

  • Knowledge Chat/Search: Q&A format knowledge retrieval, not keyword-based
  • Agent Prompting: AI-powered suggestions and next-best-action recommendations
  • Email Draft Generation: Automated response drafting based on context
  • Case Summary Generation: AI-generated case summaries for quick context
  • Conversation Summaries: Automatic conversation recap and key points extraction
  • Live Call Transcription: Real-time transcription during voice calls
  • Call Sentiment Analysis: Continuous sentiment monitoring during conversations

πŸ”§ Supporting Components

β–Ό

πŸ€– Bots

  • Connected from Copilot Studio
  • Push-based workstreams only
  • Pre-conversation automation
  • Handoff to human agents

πŸ“„ Templates

  • Session templates
  • Notification templates
  • Consistent agent experience
  • Customizable layouts

πŸ”’ Context Variables

  • Custom data passing
  • Through routing pipeline
  • Available to agents
  • Integration support

πŸ• Operating Hours

  • Queue-based schedules
  • Time zone support
  • Business hours routing
  • After-hours handling

πŸ“Š Capacity Profiles

  • Define agent workload limits
  • Channel-specific capacity
  • Unit or profile-based
  • Dynamic adjustment

πŸ’‘ Smart Assist

  • AI-powered suggestions
  • Knowledge article recommendations
  • Quick replies library
  • Real-time assistance

⚠️ Important Constraints

β–Ό
βœ“ Unified routing must be enabled for Record workstreams
βœ“ Work distribution mode (Push/Pick) CANNOT be changed after workstream creation
βœ“ Voice workstreams support PUSH mode ONLY
βœ“ Phone numbers can only be associated with ONE workstream at a time
βœ“ Queues and workstreams must have matching channel types
βœ“ Cross-queue transfers only allowed within same channel type
βœ“ Bots receive conversations only in push-based workstreams
βœ“ Representative affinity only applies to push-type work distribution
βœ“ System Administrator role OR secure column permissions required for configuration

πŸ“ Configuration Hierarchy

β–Ό
Organization/Environment
    β”‚
    β”œβ”€ Channels (provision & configure)
    β”‚   β”œβ”€ Voice Channel
    β”‚   β”‚   └─ Phone Numbers (acquire via Azure Communication Services)
    β”‚   β”œβ”€ Chat Channel
    β”‚   β”œβ”€ SMS Channel (Azure Communication Services or Twilio)
    β”‚   β”œβ”€ Social Channels (Facebook, WhatsApp, Apple Messages, LINE)
    β”‚   β”œβ”€ Microsoft Teams
    β”‚   └─ Custom Messaging Channels
    β”‚
    β”œβ”€ Workstreams (create & configure)
    β”‚   β”œβ”€ Type selection (Messaging, Voice, Record)
    β”‚   β”œβ”€ Channel association (attach channels)
    β”‚   β”œβ”€ Work distribution mode (Push or Pick)
    β”‚   β”œβ”€ Capacity settings
    β”‚   β”œβ”€ Allowed presences
    β”‚   β”œβ”€ Skill matching algorithm
    β”‚   β”œβ”€ Classification rules
    β”‚   β”œβ”€ Route-to-queue rules
    β”‚   └─ Fallback queue
    β”‚
    β”œβ”€ Queues (create & configure)
    β”‚   β”œβ”€ Queue type (Messaging, Voice, Record)
    β”‚   β”œβ”€ Assignment method
    β”‚   β”œβ”€ Priority
    β”‚   β”œβ”€ Operating hours
    β”‚   β”œβ”€ Overflow management
    β”‚   └─ Agent membership
    β”‚
    β”œβ”€ Agents/Representatives (configure)
    β”‚   β”œβ”€ Queue assignments
    β”‚   β”œβ”€ Capacity profile
    β”‚   β”œβ”€ Skills
    β”‚   └─ Presence management
    β”‚
    └─ Supporting Components
        β”œβ”€ Capacity Profiles
        β”œβ”€ Session Templates
        β”œβ”€ Notification Templates
        β”œβ”€ Context Variables
        β”œβ”€ Operating Hours
        β”œβ”€ Bots/Agents (Copilot Studio)
        └─ Smart Assist configurations