Migrating to the new Microsoft Exchange Online connectivity
Perform the following steps to migrate to the new version of Microsoft Exchange Online connector.
For on-prem environments, download the new connectivity package from the Omada Community.
Edit queries
- In the Queries and mappings view, select the Resource object type (Source: Generic resources). Click Edit. Enter the following details:
Parameters:
| Parameter | Value |
|---|---|
| Source | Generic resources |
| Distinct | Yes |
| Filter | Type=="Exchange User Mailbox" || Type=="Exchange Mailbox Access" |
| Description | Generic resources - User Mailbox and Mailbox Access |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Business key | Expression | string.Format("\<system\>{0}\</system\>\<genericresource\>{1}\</genericresource\>",BuiltIn.SystemShortName, BusinessKey) |
| Security resource business key | Expression | string.Format("\<system\>{0}\</system\>\<genericresource\>{1}\</genericresource\>",BuiltIn.SystemShortName, BusinessKey) |
| Name | Map | Name |
| Category | Map | Category |
| Type | Map | Type |
| Short name | Expression | string.Format("{0}\_{1}", BuiltIn.SystemShortName, BusinessKey) |
| Logical key | Expression | string.Format("{0}\_{1}", BuiltIn.SystemShortName, BusinessKey) |
- Edit the User Mailbox (Resource assignment - Source: Mailboxes) query:
Parameters:
| Parameter | Value |
|---|---|
| Source | Mailboxes |
| Mailbox subtype | UserMailbox |
| Filter | Type=="User mailbox" |
| Description | Online user mailboxes |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Resource Business key | Expression | string.Format("\<system\>{0}\</system\>\<genericresource\>{1}\</genericresource\>",BuiltIn.SystemShortName,RecipientTypeDetails) |
| Account - CBK | Lookup | BusinessKey=ExternalDirectoryObjectID |
| Business key | Expression | Type=="User mailbox"?"<exchangeguid>"+ExchangeGuid+"</exchangeguid>":null |
| PRIMARY_EMAIL (1) | Map | PrimarySmtpAddress |
| ADDITIONAL_EMAILS (2) | Map | EmailAddresses |
| HIDEINADDRESSLIST (1) | Map | HiddenFromAddressListsEnabled |
| ISSUEWARNINGQUOTA | Map | IssueWarningQuota |
| PROHIBITSENDQUOTA | Map | ProhibitSendQuota |
| PROHIBITSENDRECEIVEQUOTA | Map | ProhibitSendReceiveQuota |
| WEBMAIL (1) | Map | OWAEnabled |
(1) - history
(2) - history and multivalued
- Delete the following query: Resource assignment - Source: Mailboxes - Online shared mailboxes.
- Edit the Mailbox access (Full Access and Send As) query (Resource assignment - Source: Mailbox access):
Parameters:
| Parameter | Value |
|---|---|
| Source | Mailboxes |
| Mailbox subtype | UserMailbox |
| Filter | LinkedMasterAccount != null && LinkedMasterAccount != "NT AUTHORITY" |
| Description | Online user mailbox access - Send as and Full Access |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Resource Business key | Expression | string.Format("\<system\>{0}\</system\>\<genericresource\>{1}\</genericresource\>",BuiltIn.SystemShortName, Type == "Full access" ? "fullmailboxaccess": "sendasmailboxaccess") |
| Account – CBK | Lookup | DistinguishedName=LinkedMasterAccount |
| Target – CBK | string.Format("{0}\_\<exchangeguid\>{1}\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) | |
| Business key | Expression | string.Format("\<account\>{0}\</account\>\<resource\>{1}\</resource\>\<target\>{2}\</target\>", LinkedMasterAccount, Type, ExchangeGuid) |
| LinkedMasterAccount | Map | LinkedMasterAccount |
| AccessType | Map | Type |
| MAILBOXREF | Expression | string.Format("{0}\_\<exchangeguid\>{1}\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
- Edit the Access Mailbox (send on behalf) query (Resource assignment - Source: Mailboxes):
| Parameter | Value |
|---|---|
| Source | Mailboxes |
| Mailbox subtype | UserMailbox |
| Filter | Type=="Send on behalf" |
| Description | Online user mailbox access - Send on Behalf |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Resource Business key | Expression | string.Format("\<system\>{0}\</system\>\<genericresource\>sendonbehalfofmailboxaccess\</genericresource\>",BuiltIn.SystemShortName) |
| Account – CBK | Lookup | BusinessKey=GrantSendOnBehalfTo |
| Target – CBK | Expression | string.Format("{0}\_\<exchangeguid\>{1}\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Business key | Expression | string.Format("\<account\>{0}\</account\>\<resource\>{1}\</resource\>\<target\>{2}\</target\>", GrantSendOnBehalfTo, Type, ExchangeGuid) |
| PRIMARY_EMAIL (1) | Map | PrimarySmtpAddress |
| Identity | Map | Identity |
| RecipientTypeDetails | Map | RecipientTypeDetails |
| ExternalDirectoryObjectID | Map | ExternalDirectoryObjectID |
| GrantSendOnBehalfTo | Map | GrantSendOnBehalfTo |
| MAILBOXREF | Expression | string.Format("{0}\_\<exchangeguid\>{1}\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
(1) - history
- Create a new Resource query: Shared, Room and Equipment Mailbox – Full Access:
Parameters:
| Parameter | Value |
|---|---|
| Source | Mailboxes |
| Mailbox subtype | EquipmentMailbox,RoomMailbox,SharedMailbox |
| Distinct | Yes |
| Description | Online SharedMailbox, EquipmentMailbox, RoomMailbox - FullAccess |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Business key | Expression | string.Format("{0}\_\<exchangeguid\>{1}\_FullAccess\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Security resource business key | Expression | string.Format("{0}\_\<exchangeguid\>{1}\_FullAccess\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Name | DisplayName + "_FullAccess" | |
| Category | Constant | Permission |
| Type | Expression | RecipientTypeDetails == "RoomMailbox" ? "Exchange Room Mailbox" : RecipientTypeDetails == "SharedMailbox" ? "Exchange Shared Mailbox" : RecipientTypeDetails == "EquipmentMailbox" ? "Exchange Equipment Mailbox" : null |
| Short Name | Expression | string.Format("\<exchangeguid\>{0}\_FullAccess\</exchangeguid\>", ExchangeGuid) |
| Logical key | Expression | string.Format("\<exchangeguid\>{0}\</exchangeguid\>", DisplayName) |
| PRIMARY_EMAIL (1) | Map | PrimarySmtpAddress |
| RecipientTypeDetails | Map | RecipientTypeDetails |
| Identity | Map | Identity |
(1) history
- Create a new Resource query: Shared, Room and Equipment Mailbox – Send As:
Parameters:
| Parameter | Value |
|---|---|
| Source | Mailboxes |
| Mailbox subtype | EquipmentMailbox,RoomMailbox,SharedMailbox |
| Distinct | Yes |
| Description | Online SharedMailbox, EquipmentMailbox, RoomMailbox - SendAs |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Business key | Expression | string.Format("{0}\_\<exchangeguid\>{1}\_SendAs\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Security resource business key | Expression | string.Format("{0}\_\<exchangeguid\>{1}\_SendAs\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Name | Expression | DisplayName + "_SendAs" |
| Category | Constant | Permission |
| Type | Expression | RecipientTypeDetails == "RoomMailbox" ? "Exchange Room Mailbox" : RecipientTypeDetails == "SharedMailbox" ? "Exchange Shared Mailbox" : RecipientTypeDetails == "EquipmentMailbox" ? "Exchange Equipment Mailbox" : null |
| Short Name | Expression | string.Format("\<exchangeguid\>{0}\_SendAs\</exchangeguid\>", ExchangeGuid) |
| Description | Expression | string.Format("\<exchangeguid\>{0}\_SendAs\</exchangeguid\>", DisplayName) |
| PRIMARY_EMAIL* | Map | PrimarySmtpAddress |
| RecipientTypeDetails | Map | RecipientTypeDetails |
| Identity | Map | Identity |
(1) history
Do not use the description field, Omada is using this field to trigger event definitions.
- Create a new Resource query: Shared, Room and Equipment Mailbox – Send on Behalf:
Parameters:
| Parameter | Value |
|---|---|
| Source | Mailboxes |
| Mailbox subtype | EquipmentMailbox,RoomMailbox,SharedMailbox |
| Distinct | Yes |
| Description | Online SharedMailbox, EquipmentMailbox, RoomMailbox - SendOnBehalf |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Business key | Expression | string.Format("{0}\_\<exchangeguid\>{1}\_SendOnBehalf\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Security resource business key | Expression | string.Format("{0}\_\<exchangeguid\>{1}\_SendOnBehalf\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Name | Expression | DisplayName + "_SendOnBehalf" |
| Category | Constant | Permission |
| Type | Expression | RecipientTypeDetails == "RoomMailbox" ? "Exchange Room Mailbox" : RecipientTypeDetails == "SharedMailbox" ? "Exchange Shared Mailbox" : RecipientTypeDetails == "EquipmentMailbox" ? "Exchange Equipment Mailbox" : null |
| Short Name | Expression | string.Format("\<exchangeguid\>{0}\_SendOnBehalf\</exchangeguid\>", ExchangeGuid) |
| Description | Expression | string.Format("\<exchangeguid\>{0}\_SendOnBehalf\</exchangeguid\>", DisplayName) |
| PRIMARY_EMAIL (1) | Map | PrimarySmtpAddress |
| RecipientTypeDetails | Map | RecipientTypeDetails |
| Identity | Map | Identity |
(1) history
Do not use the description field, Omada is using this field to trigger event definitions.
- Create a new Resource assignment query: Shared, Room and Equipment Mailbox (Full Access):
Parameters:
| Parameter | Value |
|---|---|
| Source | Mailbox access |
| Mailbox subtype | EquipmentMailbox,RoomMailbox,SharedMailbox |
| Filter | LinkedMasterAccount != null && LinkedMasterAccount != "NT AUTHORITY" && Type == "Full access" |
| Description | Online EquipmentMailbox, RoomMailbox and SharedMailbox access - Full Access |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Resource Business key | Expression | string.Format("{0}\_\<exchangeguid\>{1}\_FullAccess\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Account - CBK | Lookup | DistinguishedName=LinkedMasterAccount |
| Target - CBK | Expression | string.Format("{0}\_\<exchangeguid\>{1}\_FullAccess\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Business key | Expression | string.Format("\<account\>{0}\_\</account\>\<exchangeguid\>{1}\_FullAccess\</exchangeguid\>", LinkedMasterAccount, ExchangeGuid) |
| LinkedMasterAccount | Map | LinkedMasterAccount |
| AccessType | Map | Type |
- Create a new Resource assignment query: Shared, Room and Equipment Mailbox (Send As):
Parameters:
| Parameter | Value |
|---|---|
| Source | Mailbox access |
| Mailbox subtype | EquipmentMailbox,RoomMailbox,SharedMailbox |
| Filter | LinkedMasterAccount != null && LinkedMasterAccount != "NT AUTHORITY" && Type == "Send as" |
| Description | Online EquipmentMailbox, RoomMailbox and SharedMailbox access - Send as |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Resource Business key | Expression | string.Format("{0}\_\<exchangeguid\>{1}\_SendAs\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Account - CBK | Lookup | DistinguishedName=LinkedMasterAccount |
| Target - CBK | Expression | string.Format("{0}\_\<exchangeguid\>{1}\_SendAs\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Business key | Expression | string.Format("\<account\>{0}\_\</account\>\<exchangeguid\>{1}\_SendAs\</exchangeguid\>", LinkedMasterAccount, ExchangeGuid) |
| LinkedMasterAccount | Map | LinkedMasterAccount |
| AccessType | Map | Type |
11 Create a new Resource assignment query: Shared, Room and Equipment Mailbox (Send on Behalf):
Parameters:
| Parameter | Value |
|---|---|
| Source | Mailboxes |
| Mailbox subtype | EquipmentMailbox,RoomMailbox,SharedMailbox |
| Filter | Type==”Send on behalf” |
| Description | Online EquipmentMailbox, RoomMailbox and SharedMailbox access - send on behalf |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Resource Business key | Expression | string.Format("{0}\_\<exchangeguid\>{1}\_SendOnBehalf\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Account - CBK | Lookup | BusinessKey=GrantSendOnBehalfTo |
| Target - CBK | Expression | string.Format("{0}\_\<exchangeguid\>{1}\_SendOnBehalf\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid) |
| Business key | Expression | string.Format("\<account\>{0}\_\</account\>\<exchangeguid\>{1}\_SendOnBehalf\</exchangeguid\>", GrantSendOnBehalfTo, ExchangeGuid) |
| PRIMARY_EMAIL* | Map | PrimarySmtpAddress |
| Identity | Map | Identity |
| RecipientTypeDetails | Map | RecipientTypeDetails |
| ExternalDirectoryObjectID | Map | ExternalDirectoryObjectID |
| GrantSendOnBehalfTo | Map | GrantSendOnBehalfTo |
Edit Distribution Groups queries
By default, Omada applies a single query to retrieve only Distribution Groups during the import process. This means that Microsoft 365 Groups and Mail-Enabled Security Groups are not included. If needed, the filter can be removed or adjusted to import all group types.
Distribution Groups – Resource
Parameters:
| Parameter | Value |
|---|---|
| Source | Distribution Group |
| Filter | Type=="DistributionGroups" && DistributionGroupIsDirSynced == "False" && !(Convert.ToString(DistributionGroupType).Contains("SecurityEnabled")) |
| Description | Distribution Groups |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Business key | Expression | DistributionGroupGuid |
| Security resource business key | Expression | DistributionGroupGuid |
| Name | Map | DistributionGroupName |
| Category | Constant | Distribution Group |
| Type | Constant | Exchange Distribution Group |
| Display name | Map | DistributionGroupDisplayName |
| Short Name | Expression | DistributionGroupName |
| Logical key (1) | Expression | !string.IsNullOrEmpty(DistributionGroupCustomAttribute1) ? DistributionGroupCustomAttribute1 : DistributionGroupGuid |
| Distinguished name | Map | DistributionGroupDistinguishedName |
| DistributionGroupType | Map | DistributionGroupType |
| DistributionGroupExternalDirectoryObjectId | Map | DistributionGroupExternalDirectoryObjectId |
| DistributionGroupIsDirSynced | Map | DistributionGroupIsDirSynced |
(1) Omada uses DistributionGroupCustomAttribute1 to store the logic key when creating distribution groups through resource. This is used to prevent the duplication of resources during the import process. If you are already using this attribute for another purpose, you can choose any other available custom attribute — Exchange supports up to 15 (CustomAttribute1 to CustomAttribute15). Update the reference in your task mappings (DistributionGroup) configuration accordingly.
Distribution Groups – Resource Assignments
Parameters:
| Parameter | Value |
|---|---|
| Source | Distribution groups |
| Filter | Type=="DistributionGroupMembers" && MemberRecipientTypeDetails == "UserMailbox" && DistributionGroupIsDirSynced == "False" && !(Convert.ToString(DistributionGroupType).Contains("SecurityEnabled")) |
| Description | Online distribution groups members |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Resource Business key | Map | DistributionGroupGuid |
| Account - CBK | Lookup | BusinessKey=MemberExternalDirectoryObjectId |
| Description | Map | MemberRecipientTypeDetails |
Administrative Roles – Resource Assignments
Parameters:
| Parameter | Value |
|---|---|
| Source | Administrative resources |
| Filter | Type=="Members" && RecipientType?.ToString().IndexOf("Group") \< 0 && MemberRecipientTypeDetails =="UserMailbox" |
| Description | Online role assignments |
Mappings:
| Destination | Operator | Source |
|---|---|---|
| Resource Business key | Expression | string.Format("\<system\>{0}\</system\>\<resource\>{1}\</resource\>",BuiltIn.SystemShortName, RoleGroupSamAccountName.ToLower() ) |
| Account - CBK | Lookup | BusinessKey=MemberExternalDirectoryObjectId |
| Business key | Expression | string.Format("\<account\>{0}\</account\>\<resource\>{1}\</resource\>", MemberExternalDirectoryObjectId, RoleGroupSamAccountName.ToLower()) |
| Description | Map | MemberRecipientTypeDetails |
Run an import
At this point, run the data import.
Provisioning
Deleting the resource type attribute sets
After running the import, go to Setup > Master Data > Resources > Resource Types and delete the attribute set from the following resource types:
- Exchange Room Mailbox
- Exchange Shared Mailbox
- Exchange Equipment Mailbox
Task mappings
Create the following task mappings:
Data model object type: MailboxAccess
Source:
| Mapping type | Resource type |
|---|---|
| Assignment | Exchange Shared Mailbox |
Mapping:
| Destination | Operator | Source |
|---|---|---|
| Object Id | Map | ObjectId |
| Object type | Constant | MailboxAccess |
| Operation | Map | Operation |
| Identity | Map | ROPE_AccountName |
| mailboxPermission | Expression | ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").EndsWith("FULLACCESS") ? "Full Access" : ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").EndsWith("SENDAS") ? "Send As" : ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").EndsWith("SENDONBEHALF") ? "Send on Behalf" : null |
| userMailboxGuid | Expression | ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").Substring(0, ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").LastIndexOf("\_")) |
Data model object type: SharedMailbox
Source:
| Mapping type | Resource type |
|---|---|
| Resource | Exchange Shared Mailbox |
Mapping:
| Destination | Operator | Source |
|---|---|---|
| Object Id | Map | ObjectId |
| Object type | Constant | SharedMailbox |
| Operation | Map | Operation |
| Identity | Expression | Operation == "DeleteIfExists" || Operation == "Delete" ? RLM_NAME.Replace("\_FullAccess", "") : null |
| Name | Expression | RLM_NAME.Replace("\_FullAccess", "") |
| DisplayName | Expression | RLM_NAME.Replace("\_FullAccess", "") |
| Alias | Expression | RLM_NAME.Replace("\_FullAccess","").Replace(" ","") |
Data model object type: MailboxAccess
Source:
| Mapping type | Resource type |
|---|---|
| Assignment | Exchange Room Mailbox |
Mapping:
| Destination | Operator | Source |
|---|---|---|
| Object Id | Map | ObjectId |
| Object type | Constant | MailboxAccess |
| Operation | Map | Operation |
| Identity | Map | ROPE_AccountName |
| mailboxPermission | Expression | ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").EndsWith("FULLACCESS") ? "Full Access" : ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").EndsWith("SENDAS") ? "Send As" : ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").EndsWith("SENDONBEHALF") ? "Send on Behalf" : null |
| userMailboxGuid | Expression | ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").Substring(0, ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").LastIndexOf("\_")) |
Data model object type: RoomMailbox
Source:
| Mapping type | Resource type |
|---|---|
| Resource | Exchange Room Mailbox |
Mapping:
| Destination | Operator | Source |
|---|---|---|
| Object Id | Map | ObjectId |
| Object type | Constant | RoomMailbox |
| Operation | Map | Operation |
| Identity | Expression | Operation == "DeleteIfExists" || Operation == "Delete" ? RLM_NAME.Replace("\_FullAccess", "") : null |
| Name | Expression | RLM_NAME.Replace("\_FullAccess", "") |
| DisplayName | Expression | RLM_NAME.Replace("\_FullAccess", "") |
| Alias | Expression | RLM_NAME.Replace("\_FullAccess","").Replace(" ","") |
Data model object type: MailboxAccess
Source:
| Mapping type | Resource type |
|---|---|
| Assignment | Exchange Equipment Mailbox |
Mapping:
| Destination | Operator | Source |
|---|---|---|
| Object Id | Map | ObjectId |
| Object type | Constant | MailboxAccess |
| Operation | Map | Operation |
| Identity | Map | ROPE_AccountName |
| mailboxPermission | Expression | ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").EndsWith("FULLACCESS") ? "Full Access" : ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").EndsWith("SENDAS") ? "Send As" : ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").EndsWith("SENDONBEHALF") ? "Send on Behalf" : null |
| userMailboxGuid | Expression | ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").Substring(0, ROPE_ResourceIdentifier.Replace("\<EXCHANGEGUID\>","").Replace("\</EXCHANGEGUID\>","").LastIndexOf("\_")) |
Data model object type: EquipmentMailbox
Source:
| Mapping type | Resource type |
|---|---|
| Resource | Exchange Equipment Mailbox |
Mapping:
| Destination | Operator | Source |
|---|---|---|
| Object Id | Map | ObjectId |
| Object type | Constant | EquipmentMailbox |
| Operation | Map | Operation |
| Identity | Expression | Operation == "DeleteIfExists" || Operation == "Delete" ? RLM_NAME.Replace("\_FullAccess", "") : null |
| Name | Expression | RLM_NAME.Replace("\_FullAccess", "") |
| DisplayName | Expression | RLM_NAME.Replace("\_FullAccess", "") |
| Alias | Expression | RLM_NAME.Replace("\_FullAccess","").Replace(" ","") |
Data model object type: DistributionGroup
Source:
| Mapping type | Resource type |
|---|---|
| Resource | Exchange Distribution Group |
Mapping:
| Destination | Operator | Source |
|---|---|---|
| Object Id | Map | ObjectId |
| Object type | Constant | DistributionGroup |
| Operation | Map | Operation |
| Identity | Expression | Operation == "Create" || Operation == "CreateIfNotExists" ? null : RLM_ODWBUSIKEY.Substring(RLM_ODWBUSIKEY.IndexOf("\_") + 1, RLM_ODWBUSIKEY.LastIndexOf("\<") - RLM_ODWBUSIKEY.IndexOf("\_") - 1) |
| Name | Map | RLM_NAME |
| DisplayName | Map | RLM_NAME |
| Type | Constant | Distribution |
| bundledAttributes | Expression | string.Format("CustomAttribute1={0}", RLM_ODWLOGICKEY) |
Data model object type: DistributionGroupAssignment
Source:
| Mapping type | Resource type |
|---|---|
| Assignment | Exchange Distribution Group |
Mapping:
| Destination | Operator | Source |
|---|---|---|
| Object Id | Map | ObjectId |
| Object type | Constant | DistributionGroupAssignment |
| Operation | Map | Operation |
| Identity | Map | ROPE_AccountName |
| distributionGroupGuid | Expression | ROPE_ResourceCBK.Substring(ROPE_ResourceCBK.IndexOf("\_") + 1, ROPE_ResourceCBK.LastIndexOf("\<") - ROPE_ResourceCBK.IndexOf("\_") - 1) |
Event definitions
For efficient resource provisioning (including distribution groups), establish event definitions that trigger create and delete operations. To create event definitions, implement a code method to GenerateGUID in the logical key field.
Event Exchange Online – Distribution Group – Create
-
Go to Setup > Administration > Process configuration > Event definitions. Click New. Enter the following details:
- Name: Event Exchange Online - Distribution Group - Create
- Event is triggered when: A new object is created
- Triggers on objects of type: Resources
-
Click Apply.
-
Create two execute code methods by clicking New.
Method 1:
Method 2:
- Click OK.
- Click Filter to create a new filter. Enter the following details:
- Click OK, Close and then OK.
Event Exchange Online – Distribution Group – Delete
-
Go to Setup > Administration > Process configuration > Event definitions. Click New. Enter the following details:
- Name: Event Exchange Online - Distribution Group - Delete
- Event is triggered when: An existing object is deleted
- Triggers on objects of type: Resources
-
Click Apply.
-
Create a new code method by clicking New. Select Execute code method and enter the following details:
- Click OK.
- Click Filter to create a new filter. Enter the following details:
- Click OK, Close and then OK.
Event Exchange Online – SharedMailbox, RoomMailbox and EquipmentMailbox - Create
-
Go to Setup > Administration > Process configuration > Event definitions. Click New. Enter the following details:
- Name:: Event Exchange Online - SharedMailbox, EquipmentMailbox, RoomMailbox – Create
- Event is triggered when: A new object is created
- Triggers on objects of type: Resources
-
Click Apply.
-
Create a new code method by clicking New. Select Execute code method and enter the following details:
- Click OK.
- Create another code method by clicking New. Select Execute code method and enter the following details:
- Click OK.
- Click Filter to create a new filter. Click Filter expressions and then New. Enter the following details:
- Click OK.
- Create a new filter. Enter the following details:
- Click OK.
Event Exchange Online – SharedMailbox, RoomMailbox and EquipmentMailbox - Delete
-
Go to Setup > Administration > Process configuration > Event definitions. Click New. Enter the following details:
- Name: Event Exchange Online - SharedMailbox, EquipmentMailbox, RoomMailbox – Delete
- Event is triggered when: An existing object is deleted
- Triggers on objects of type: Resources
-
Click Apply.
-
Create a new code method by clicking New. Select Execute code method and enter the following details:
- Click OK.
- Click Filter to create a new filter. Click Filter expressions and then New. Enter the following details:
- Click OK.
- Create a new filter. Enter the following details:
- Click OK.