Orchard Core Omnichannel Management
Configure the Interaction Center
You are an Orchard Core expert. Build contact and activity operations around the
Omnichannel Management feature's existing Interaction Center rather than
inventing agent queues, routing rules, or a separate conversation-management
surface that this module does not provide.
Guidelines
- Install
CrestApps.OrchardCore.Omnichannel.Managements in the web/startup
project. It depends on the base Omnichannel feature and required CrestApps
contact, phone verification, user, time-zone, resource, and Orchard features.
- Enable the exact management feature ID
CrestApps.OrchardCore.Omnichannel.Managements.
- The feature adds Interaction Center administration for Activities and a
Management submenu containing Manage Activities, Load Inventory, Subject
Flows, Campaigns, Campaign Groups, Dispositions, and Channel Endpoints.
- Contacts are ordinary Orchard content items with
OmnichannelContactPart.
The management module also registers PhoneNumberInfoPart, EmailInfoPart,
and OmnichannelContactInfoPart.
- A subject is a content type with the
OmnichannelSubject stereotype.
SubjectFlowSettings associates each configured subject type with a campaign,
interaction type, channel, and, for automated work, a channel endpoint.
- This module assigns activities to users but does not implement agent queues
or routing algorithms. Use activity assignment and the bulk management UI;
do not document queue or conversation-routing configuration that does not
exist here.
- Install an
IOmnichannelProcessor feature, such as SMS automation, before
creating automated activity flows for that channel.
- Keep custom C# types
sealed, use file-scoped namespaces, and keep View
Models unsealed when model binding requires them.
Feature and Package
| Item |
Value |
| NuGet package |
CrestApps.OrchardCore.Omnichannel.Managements |
| Base feature |
CrestApps.OrchardCore.Omnichannel |
| Management feature |
CrestApps.OrchardCore.Omnichannel.Managements |
| Admin area |
Interaction Center |
{
"steps": [
{
"name": "Feature",
"enable": [
"CrestApps.OrchardCore.Omnichannel",
"CrestApps.OrchardCore.Omnichannel.Managements"
],
"disable": []
}
]
}
Interaction Center Surface
| Area |
What the module manages |
| Activities |
Review, create, edit, complete, and filter omnichannel work |
| Manage Activities |
Bulk assignment, scheduling, subject, instruction, urgency, and purge operations |
| Load Inventory |
Create and manage activity batches that define contact filters and generate activities |
| Subject Flows |
Configure a flow per OmnichannelSubject content type |
| Campaigns |
Maintain campaign catalog records |
| Campaign Groups |
Maintain campaign-group catalog records |
| Dispositions |
Maintain outcomes used by subject actions |
| Channel Endpoints |
Maintain channel-specific service addresses |
Activities are represented by OmnichannelActivity; batches are represented by
OmnichannelActivityBatch. The management feature uses Orchard display managers for activity batches and
subject actions, alongside its activity and channel-endpoint stores and
managers. Extend those display-driver surfaces rather than replacing their
controllers with a separate queue UI.
Model Contacts Correctly
Create a business-specific content type, attach OmnichannelContactPart, then
add the contact fields your organization needs.
- Go to Content Definition and create or edit the contact type.
- Attach
OmnichannelContactPart.
- Add phone, email, identity, and business fields as required.
- Create or import content items of that type.
- Configure only the communication-preference controls that apply to the type.
The part tracks DoNotCall, DoNotSms, DoNotEmail, and DoNotChat with UTC
timestamps. The management feature’s contact definition services enforce the
Omnichannel contact structure and support activity lookup and contact indexing.
Configure Subject Flows
Create a content type with the OmnichannelSubject stereotype to model the
subject or data gathered by an interaction.
- Create a campaign and the dispositions the flow needs.
- Open Interaction Center → Subject Flows.
- Select Configure for the subject content type.
- Select the campaign, interaction type, and channel.
- For an automated interaction, select a channel endpoint.
- Save the flow and then select Manage Flow to define actions.
SubjectFlowSettingsService considers a flow configured only when it has:
SubjectContentType
CampaignId
Channel
ChannelEndpointId for Automated interactions
Only configured subjects are appropriate for loading activities. If the AI
feature is enabled, AISubjectFlowSettingsDisplayDriver adds AI-related fields
to the subject-flow editor.
Define Disposition Actions
SubjectAction entries run after an activity is completed with the matching
subject type and disposition. The built-in action types are:
| Action |
Behavior |
| Finish |
Makes no additional activity changes |
| Try Again |
Creates a retry activity with attempt, urgency, schedule, and optional assignee settings |
| New Activity |
Creates a new activity and resolves target-subject flow settings when available |
Each action can also apply contact communication preferences. For example, use a
disposition action to set DoNotSms after a customer opts out.
The default ISubjectActionExecutor is DefaultSubjectActionExecutor. It
executes all actions matching the completed activity’s subject content type and
disposition; it does not execute a generic campaign-wide routing rule.
Create and Process Activities
Use an activity batch to find contacts and create work at scale:
- Create an
OmnichannelActivityBatch.
- Choose the contact criteria, subject type, and assignment details.
- Load activities through the batch UI.
- Resolve work manually in Activities, or enable a processor for automated
work.
- Complete an activity with a disposition to execute the matching subject
actions.
AutomatedActivitiesProcessorBackgroundTask runs every five minutes with the
schedule */5 * * * *. It selects scheduled automated activities in batches
of 100 and dispatches them to registered IOmnichannelProcessor instances
matched by channel. It only processes activities whose status is NotStated or Scheduled,
whose interaction type is Automated, and whose scheduled time has arrived.
Add a Custom Processor
A channel feature can supply a processor for automated activity dispatch. Keep
the channel name aligned with the activity's selected channel.
using CrestApps.OrchardCore.Omnichannel.Core;
using CrestApps.OrchardCore.Omnichannel.Core.Models;
namespace MyCompany.OrchardCore.Communications;
public sealed class ExampleOmnichannelProcessor : IOmnichannelProcessor
{
public string Channel => "Example";
public Task StartAsync(OmnichannelActivity activity, CancellationToken cancellationToken)
{
// Send or start work for the selected activity.
return Task.CompletedTask;
}
}
Register the implementation in the owning feature as an
IOmnichannelProcessor. Do not register a processor for a channel until its
outbound provider credentials, endpoint behavior, and retry policy are ready.
Permissions
The feature grants all of the following to the Administrator stereotype:
ListActivities
ListContactActivities
CompleteActivity
CompleteOwnActivity
ManageActivities
PurgeActivity
ManageDispositions
ManageCampaigns
ManageCampaignGroups
ManageChannelEndpoints
ManageActivityBatches
ManageSubjectFlows
The Agent stereotype receives ListActivities, ListContactActivities, and
CompleteOwnActivity. Grant management permissions deliberately; activity
purging and broad assignment affect operational data.
Operational Checklist
- Configure a subject flow before loading activities for that subject.
- Create endpoints before using an automated flow that requires one.
- Enable a matching channel processor before scheduling automated work.
- Model opt-out preferences on contacts and apply them through disposition
actions where appropriate.
- Review the five-minute processor schedule and monitor failed processor logs.
- Use Activity Batches for bulk generation rather than custom direct database
writes.
- Treat activities as the module's work-management boundary; this feature has
no native queue, routing-engine, or conversation-inbox configuration.
1---2name: orchardcore-omnichannel-management3description: Skill for administering Omnichannel contacts, activities, batches, subject flows, campaigns, dispositions, and channel endpoints in Orchard Core using CrestApps modules. Covers the Interaction Center, contact content parts, activity dispatch, subject actions, permissions, and contact import integration. Use this skill when requests mention Orchard Core Omnichannel Management, Interaction Center, activity batches, subject flows, dispositions, channel endpoints, OmnichannelContactPart, or automated activity processing. Strong matches include work with CrestApps.OrchardCore.Omnichannel.Managements, AutomatedActivitiesProcessorBackgroundTask, SubjectFlowSettings, SubjectAction, OmnichannelActivity, OmnichannelActivityBatch, and IOmnichannelActivityManager.4license: Apache-2.05---67# Orchard Core Omnichannel Management89## Configure the Interaction Center1011You are an Orchard Core expert. Build contact and activity operations around the12Omnichannel Management feature's existing Interaction Center rather than13inventing agent queues, routing rules, or a separate conversation-management14surface that this module does not provide.1516### Guidelines1718- Install `CrestApps.OrchardCore.Omnichannel.Managements` in the web/startup19 project. It depends on the base Omnichannel feature and required CrestApps20 contact, phone verification, user, time-zone, resource, and Orchard features.21- Enable the exact management feature ID22 `CrestApps.OrchardCore.Omnichannel.Managements`.23- The feature adds **Interaction Center** administration for Activities and a24 Management submenu containing Manage Activities, Load Inventory, Subject25 Flows, Campaigns, Campaign Groups, Dispositions, and Channel Endpoints.26- Contacts are ordinary Orchard content items with `OmnichannelContactPart`.27 The management module also registers `PhoneNumberInfoPart`, `EmailInfoPart`,28 and `OmnichannelContactInfoPart`.29- A subject is a content type with the `OmnichannelSubject` stereotype.30 `SubjectFlowSettings` associates each configured subject type with a campaign,31 interaction type, channel, and, for automated work, a channel endpoint.32- This module assigns activities to users but does not implement agent queues33 or routing algorithms. Use activity assignment and the bulk management UI;34 do not document queue or conversation-routing configuration that does not35 exist here.36- Install an `IOmnichannelProcessor` feature, such as SMS automation, before37 creating automated activity flows for that channel.38- Keep custom C# types `sealed`, use file-scoped namespaces, and keep View39 Models unsealed when model binding requires them.4041## Feature and Package4243| Item | Value |44|---|---|45| NuGet package | `CrestApps.OrchardCore.Omnichannel.Managements` |46| Base feature | `CrestApps.OrchardCore.Omnichannel` |47| Management feature | `CrestApps.OrchardCore.Omnichannel.Managements` |48| Admin area | **Interaction Center** |4950```json51{52 "steps": [53 {54 "name": "Feature",55 "enable": [56 "CrestApps.OrchardCore.Omnichannel",57 "CrestApps.OrchardCore.Omnichannel.Managements"58 ],59 "disable": []60 }61 ]62}63```6465## Interaction Center Surface6667| Area | What the module manages |68|---|---|69| Activities | Review, create, edit, complete, and filter omnichannel work |70| Manage Activities | Bulk assignment, scheduling, subject, instruction, urgency, and purge operations |71| Load Inventory | Create and manage activity batches that define contact filters and generate activities |72| Subject Flows | Configure a flow per `OmnichannelSubject` content type |73| Campaigns | Maintain campaign catalog records |74| Campaign Groups | Maintain campaign-group catalog records |75| Dispositions | Maintain outcomes used by subject actions |76| Channel Endpoints | Maintain channel-specific service addresses |7778Activities are represented by `OmnichannelActivity`; batches are represented by79`OmnichannelActivityBatch`. The management feature uses Orchard display managers for activity batches and80subject actions, alongside its activity and channel-endpoint stores and81managers. Extend those display-driver surfaces rather than replacing their82controllers with a separate queue UI.8384## Model Contacts Correctly8586Create a business-specific content type, attach `OmnichannelContactPart`, then87add the contact fields your organization needs.88891. Go to **Content Definition** and create or edit the contact type.902. Attach `OmnichannelContactPart`.913. Add phone, email, identity, and business fields as required.924. Create or import content items of that type.935. Configure only the communication-preference controls that apply to the type.9495The part tracks `DoNotCall`, `DoNotSms`, `DoNotEmail`, and `DoNotChat` with UTC96timestamps. The management feature’s contact definition services enforce the97Omnichannel contact structure and support activity lookup and contact indexing.9899## Configure Subject Flows100101Create a content type with the `OmnichannelSubject` stereotype to model the102subject or data gathered by an interaction.1031041. Create a campaign and the dispositions the flow needs.1052. Open **Interaction Center → Subject Flows**.1063. Select **Configure** for the subject content type.1074. Select the campaign, interaction type, and channel.1085. For an automated interaction, select a channel endpoint.1096. Save the flow and then select **Manage Flow** to define actions.110111`SubjectFlowSettingsService` considers a flow configured only when it has:112113- `SubjectContentType`114- `CampaignId`115- `Channel`116- `ChannelEndpointId` for `Automated` interactions117118Only configured subjects are appropriate for loading activities. If the AI119feature is enabled, `AISubjectFlowSettingsDisplayDriver` adds AI-related fields120to the subject-flow editor.121122## Define Disposition Actions123124`SubjectAction` entries run after an activity is completed with the matching125subject type and disposition. The built-in action types are:126127| Action | Behavior |128|---|---|129| Finish | Makes no additional activity changes |130| Try Again | Creates a retry activity with attempt, urgency, schedule, and optional assignee settings |131| New Activity | Creates a new activity and resolves target-subject flow settings when available |132133Each action can also apply contact communication preferences. For example, use a134disposition action to set `DoNotSms` after a customer opts out.135136The default `ISubjectActionExecutor` is `DefaultSubjectActionExecutor`. It137executes all actions matching the completed activity’s subject content type and138disposition; it does not execute a generic campaign-wide routing rule.139140## Create and Process Activities141142Use an activity batch to find contacts and create work at scale:1431441. Create an `OmnichannelActivityBatch`.1452. Choose the contact criteria, subject type, and assignment details.1463. Load activities through the batch UI.1474. Resolve work manually in **Activities**, or enable a processor for automated148 work.1495. Complete an activity with a disposition to execute the matching subject150 actions.151152`AutomatedActivitiesProcessorBackgroundTask` runs every five minutes with the153schedule `*/5 * * * *`. It selects scheduled automated activities in batches154of 100 and dispatches them to registered `IOmnichannelProcessor` instances155matched by channel. It only processes activities whose status is `NotStated` or `Scheduled`,156whose interaction type is `Automated`, and whose scheduled time has arrived.157158## Add a Custom Processor159160A channel feature can supply a processor for automated activity dispatch. Keep161the channel name aligned with the activity's selected channel.162163```csharp164using CrestApps.OrchardCore.Omnichannel.Core;165using CrestApps.OrchardCore.Omnichannel.Core.Models;166167namespace MyCompany.OrchardCore.Communications;168169public sealed class ExampleOmnichannelProcessor : IOmnichannelProcessor170{171 public string Channel => "Example";172173 public Task StartAsync(OmnichannelActivity activity, CancellationToken cancellationToken)174 {175 // Send or start work for the selected activity.176 return Task.CompletedTask;177 }178}179```180181Register the implementation in the owning feature as an182`IOmnichannelProcessor`. Do not register a processor for a channel until its183outbound provider credentials, endpoint behavior, and retry policy are ready.184185## Permissions186187The feature grants all of the following to the Administrator stereotype:188189- `ListActivities`190- `ListContactActivities`191- `CompleteActivity`192- `CompleteOwnActivity`193- `ManageActivities`194- `PurgeActivity`195- `ManageDispositions`196- `ManageCampaigns`197- `ManageCampaignGroups`198- `ManageChannelEndpoints`199- `ManageActivityBatches`200- `ManageSubjectFlows`201202The `Agent` stereotype receives `ListActivities`, `ListContactActivities`, and203`CompleteOwnActivity`. Grant management permissions deliberately; activity204purging and broad assignment affect operational data.205206## Operational Checklist207208- Configure a subject flow before loading activities for that subject.209- Create endpoints before using an automated flow that requires one.210- Enable a matching channel processor before scheduling automated work.211- Model opt-out preferences on contacts and apply them through disposition212 actions where appropriate.213- Review the five-minute processor schedule and monitor failed processor logs.214- Use Activity Batches for bulk generation rather than custom direct database215 writes.216- Treat activities as the module's work-management boundary; this feature has217 no native queue, routing-engine, or conversation-inbox configuration.