Skip to main content

Data import

General settings

General settings

Connection details

SettingDescription
AuthenticationCertificate with password
OrganizationOrganization - specifies the organization that is used.
Application IDSpecifies the application ID of the service principal that's used in certificate-based authentication.
Certificate (PEM format)The certificate used for certificate-based authentication. Value should be enclosed with -----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----
Private key (PEM format)A private key used for certificate-based authentication. Value should be enclosed with -----BEGIN PRIVATE KEY----- and -----END PRIVATE KEY-----
Private key passwordSpecifies a password for the private key used for certificate-based authentication.
Private key passwordPrivate key password.
Script fileA custom script file.
Test connectionEnable this setting to test the connection information that you have specified.

Before the first import

Before starting the import, create an Event Definition to populate the Prevent Self-Service field of the Shared Mailbox resources.

  1. In Omada Identity, go to Setup > Administration > Process configuration > Event definitions. Click New. Enter the following details:

    • Name: Exchange Online - Prevent self-service
    • Event is triggered when: Select the A new object is created checkbox
    • Triggers on objects of type: Resources
  2. Click Apply.

    Event definition
  3. At the bottom part of the window, click New to create a new Execute code method action.

  4. Select Modify object and ensure the following configuration is applied:

    Event definition modification
  5. Click OK.

  6. Click Filter.

    Event definition filter
  7. Create 3 new filters:

  • Left side: Resource Type
  • Right side (reference): Exchange Shared Mailbox

  • Left side: System
  • Right side(reference): Choose the name of your Exchange Online System

  • Left side: Name
  • Right side (value): Shared mailbox
  1. Click OK and then Close.

    Event definition - final configuration

Queries and mappings

Generic Resources - Resource

Parameters:

ParameterValue
SourceGeneric resources
DistinctYes
FilterType=="Exchange User Mailbox" || Type=="Exchange Mailbox Access"
DescriptionGeneric resources - User Mailbox and Mailbox Access

Mappings:

DestinationOperatorSource
Business keyExpressionstring.Format("<system>{0}</system><genericresource>{1}</genericresource>",BuiltIn.SystemShortName, BusinessKey)
Security resource business keyExpressionstring.Format("<system>{0}</system><genericresource>{1}</genericresource>",BuiltIn.SystemShortName, BusinessKey)
NameMapName
CategoryMapCategory
TypeMapType
Short nameExpressionstring.Format("{0}_{1}", BuiltIn.SystemShortName, BusinessKey)
Logical keyExpressionstring.Format("{0}_{1}", BuiltIn.SystemShortName, BusinessKey)

User Mailbox – Resource Assignments

Parameters:

ParameterValue
SourceMailboxes
Mailbox subtypeUserMailbox
FilterType=="User mailbox"
DescriptionOnline user mailboxes assignments

Mappings:

DestinationOperatorSource
Resource Business keyExpressionstring.Format("<system>{0}</system><genericresource>{1}</genericresource>",BuiltIn.SystemShortName,RecipientTypeDetails)
Account - CBKLookupBusinessKey=ExternalDirectoryObjectID
Business keyExpressionType=="User mailbox"?"<exchangeguid>"+ExchangeGuid+"</exchangeguid>":null
PRIMARY_EMAIL (1)MapPrimarySmtpAddress
ADDITIONAL_EMAILS (2)MapEmailAddresses
HIDEINADDRESSLIST (1)MapHiddenFromAddressListsEnabled
ISSUEWARNINGQUOTAMapIssueWarningQuota
PROHIBITSENDQUOTAMapProhibitSendQuota
PROHIBITSENDRECEIVEQUOTAMapProhibitSendReceiveQuota
WEBMAIL (1)MapOWAEnabled

(1) - history
(2) - history and multivalued

User - Access Mailbox (send on behalf) – Resource Assignments

Parameters:

ParameterValue
SourceMailboxes
Mailbox subtypeUserMailbox
FilterType=="Send on behalf"
DescriptionOnline user mailbox access - Send on Behalf

Mappings:

DestinationOperatorSource
Resource Business keyExpressionstring.Format("\<system\>{0}\</system\>\<genericresource\>sendonbehalfofmailboxaccess\</genericresource\>",BuiltIn.SystemShortName)
Account – CBKLookupBusinessKey=GrantSendOnBehalfTo
Target – CBKExpressionstring.Format("{0}\_\<exchangeguid\>{1}\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid)
Business keyExpressionstring.Format("\<account\>{0}\</account\>\<resource\>{1}\</resource\>\<target\>{2}\</target\>", GrantSendOnBehalfTo, Type, ExchangeGuid)
PRIMARY_EMAIL (1)MapPrimarySmtpAddress
IdentityMapIdentity
RecipientTypeDetailsMapRecipientTypeDetails
ExternalDirectoryObjectIDMapExternalDirectoryObjectID
GrantSendOnBehalfToMapGrantSendOnBehalfTo
MAILBOXREFExpressionstring.Format("{0}\_\<exchangeguid\>{1}\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid)

(1) - history

Shared, Room and Equipment Mailbox – Full Access – Resource

Parameters:

ParameterValue
SourceMailboxes
Mailbox subtypeEquipmentMailbox,RoomMailbox,SharedMailbox
DistinctYes
DescriptionOnline SharedMailbox, EquipmentMailbox, RoomMailbox - FullAccess

Mappings:

DestinationOperatorSource
Business keyExpressionstring.Format("{0}\_\<exchangeguid\>{1}\_FullAccess\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid)
Security resource business keyExpressionstring.Format("{0}\_\<exchangeguid\>{1}\_FullAccess\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid)
NameDisplayName + "_FullAccess"
CategoryConstantPermission
TypeExpressionRecipientTypeDetails == "RoomMailbox" ? "Exchange Room Mailbox" : RecipientTypeDetails == "SharedMailbox" ? "Exchange Shared Mailbox" : RecipientTypeDetails == "EquipmentMailbox" ? "Exchange Equipment Mailbox" : null
Short NameExpressionstring.Format("\<exchangeguid\>{0}\_FullAccess\</exchangeguid\>", ExchangeGuid)
Logical keyExpressionstring.Format("\<exchangeguid\>{0}\</exchangeguid\>", DisplayName)
PRIMARY_EMAIL (1)MapPrimarySmtpAddress
RecipientTypeDetailsMapRecipientTypeDetails
IdentityMapIdentity

(1) history

note

Do not use the description field, Omada is using this field to trigger event definitions.

Shared, Room and Equipment Mailbox – Send As – Resource

Parameters:

ParameterValue
SourceMailboxes
Mailbox subtypeEquipmentMailbox,RoomMailbox,SharedMailbox
DistinctYes
DescriptionOnline SharedMailbox, EquipmentMailbox, RoomMailbox - SendAs

Mappings:

DestinationOperatorSource
Business keyExpressionstring.Format("{0}\_\<exchangeguid\>{1}\_SendAs\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid)
Security resource business keyExpressionstring.Format("{0}\_\<exchangeguid\>{1}\_SendAs\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid)
NameDisplayName + "_SendAs"
CategoryConstantPermission
TypeExpressionRecipientTypeDetails == "RoomMailbox" ? "Exchange Room Mailbox" : RecipientTypeDetails == "SharedMailbox" ? "Exchange Shared Mailbox" : RecipientTypeDetails == "EquipmentMailbox" ? "Exchange Equipment Mailbox" : null
Short NameExpressionstring.Format("\<exchangeguid\>{0}\_SendAs\</exchangeguid\>", ExchangeGuid)
DescriptionExpressionstring.Format("\<exchangeguid\>{0}\_SendAs\</exchangeguid\>", DisplayName)
PRIMARY_EMAIL (1)MapPrimarySmtpAddress
RecipientTypeDetailsMapRecipientTypeDetails
IdentityMapIdentity

(1) history

note

Do not use the description field, Omada is using this field to trigger event definitions.

Shared, Room and Equipment Mailbox – Send on Behalf – Resource

Parameters:

ParameterValue
SourceMailboxes
Mailbox subtypeEquipmentMailbox,RoomMailbox,SharedMailbox
DistinctYes
DescriptionOnline SharedMailbox, EquipmentMailbox, RoomMailbox - SendOnBehalf

Mappings:

DestinationOperatorSource
Business keyExpressionstring.Format("{0}\_\<exchangeguid\>{1}\_SendOnBehalf\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid)
Security resource business keyExpressionstring.Format("{0}\_\<exchangeguid\>{1}\_SendOnBehalf\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid)
NameDisplayName + "_SendOnBehalf"
CategoryConstantPermission
TypeExpressionRecipientTypeDetails == "RoomMailbox" ? "Exchange Room Mailbox" : RecipientTypeDetails == "SharedMailbox" ? "Exchange Shared Mailbox" : RecipientTypeDetails == "EquipmentMailbox" ? "Exchange Equipment Mailbox" : null
Short NameExpressionstring.Format("\<exchangeguid\>{0}\_SendOnBehalf\</exchangeguid\>", ExchangeGuid)
DescriptionExpressionstring.Format("\<exchangeguid\>{0}\_SendOnBehalf\</exchangeguid\>", DisplayName)
PRIMARY_EMAIL (1)MapPrimarySmtpAddress
RecipientTypeDetailsMapRecipientTypeDetails
IdentityMapIdentity

(1) history

note

Do not use the description field, Omada is using this field to trigger event definitions.

Shared, Room and Equipment Mailbox (Full Access) – Resource Assignments

Parameters:

ParameterValue
SourceMailbox access
Mailbox subtypeEquipmentMailbox,RoomMailbox,SharedMailbox
FilterLinkedMasterAccount != null && LinkedMasterAccount != "NT AUTHORITY" && Type == "Full access"
DescriptionOnline EquipmentMailbox, RoomMailbox and SharedMailbox access - Full Access

Mappings:

DestinationOperatorSource
Resource Business keyExpressionstring.Format("{0}\_\<exchangeguid\>{1}\_FullAccess\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid)
Account - CBKLookupDistinguishedName=LinkedMasterAccount
Target - CBKExpressionstring.Format("{0}\_\<exchangeguid\>{1}\_FullAccess\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid)
Business keyExpressionstring.Format("\<account\>{0}\_\</account\>\<exchangeguid\>{1}\_FullAccess\</exchangeguid\>", LinkedMasterAccount, ExchangeGuid)
LinkedMasterAccountMapLinkedMasterAccount
AccessTypeMapType

Shared, Room and Equipment Mailbox (Send As) – Resource Assignments

Parameters:

ParameterValue
SourceMailbox access
Mailbox subtypeEquipmentMailbox,RoomMailbox,SharedMailbox
FilterLinkedMasterAccount != null && LinkedMasterAccount != "NT AUTHORITY" && Type == "Send as"
DescriptionOnline EquipmentMailbox, RoomMailbox and SharedMailbox access - Send as

Mappings:

DestinationOperatorSource
Resource Business keyExpressionstring.Format("{0}\_\<exchangeguid\>{1}\_SendAs\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid)
Account - CBKLookupDistinguishedName=LinkedMasterAccount
Target - CBKExpressionstring.Format("{0}\_\<exchangeguid\>{1}\_SendAs\</exchangeguid\>", BuiltIn.SourceSystemID, ExchangeGuid)
Business keyExpressionstring.Format("\<account\>{0}\_\</account\>\<exchangeguid\>{1}\_SendAs\</exchangeguid\>", LinkedMasterAccount, ExchangeGuid)
LinkedMasterAccountMapLinkedMasterAccount
AccessTypeMapType

Shared, Room and Equipment Mailbox (Send on Behalf) – Resource Assignments

Parameters:

ParameterValue
SourceMailboxes
Mailbox subtypeEquipmentMailbox,RoomMailbox,SharedMailbox
FilterType==”Send on behalf”
DescriptionOnline EquipmentMailbox, RoomMailbox and SharedMailbox access - send on behalf

Mappings:

DestinationOperatorSource
Resource Business keyExpressionstring.Format("0_<exchangeguid>1_SendOnBehalf</exchangeguid>", BuiltIn.SourceSystemID, ExchangeGuid)
Account - CBKLookupBusinessKey=GrantSendOnBehalfTo
Target - CBKExpressionstring.Format("0_<exchangeguid>1_SendOnBehalf</exchangeguid>", BuiltIn.SourceSystemID, ExchangeGuid)
Business keyExpressionstring.Format("<account>0_</account><exchangeguid>1_SendOnBehalf</exchangeguid>", GrantSendOnBehalfTo, ExchangeGuid)
PRIMARY_EMAIL (1)MapPrimarySmtpAddress
IdentityMapIdentity
RecipientTypeDetailsMapRecipientTypeDetails
ExternalDirectoryObjectIDMapExternalDirectoryObjectID
GrantSendOnBehalfToMapGrantSendOnBehalfTo

(1) - history

Distribution groups - Resource

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. You can remove or adjust the filter to import all group types. To onboard distribution groups and mail-enabled security groups separately, use additional filtering - use the DistributionGroupType attribute and provide the SecurityEnabled value to specifically provision mail-enabled security groups.

ParameterValue
SourceDistribution Group
FilterType=="DistributionGroups" && DistributionGroupIsDirSynced == "False" && !(Convert.ToString(DistributionGroupType).Contains("SecurityEnabled"))
DescriptionDistribution Groups

Mappings:

DestinationOperatorSource
Business keyExpressionDistributionGroupGuid
Security resource business keyExpressionDistributionGroupGuid
NameMapDistributionGroupName
CategoryConstantDistribution Group
TypeConstantExchange Distribution Group
Display nameMapDistributionGroupDisplayName
Short NameExpressionDistributionGroupName
Logical key (1)Expression!string.IsNullOrEmpty(DistributionGroupCustomAttribute1) ? DistributionGroupCustomAttribute1 : DistributionGroupGuid
Distinguished nameMapDistributionGroupDistinguishedName
DistributionGroupTypeMapDistributionGroupType
DistributionGroupExternalDirectoryObjectIdMapDistributionGroupExternalDirectoryObjectId
DistributionGroupIsDirSyncedMapDistributionGroupIsDirSynced

(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're already using this attribute for another purpose, you can choose any other available custom attribute. Exchange supports up to 15 (CustomAttribute1 to CustomAttribute15). Make sure to update the reference in your task mappings (DistributionGroup) configuration accordingly.

Distribution Groups – Resource Assignments

Parameters:

ParameterValue
SourceDistribution groups
FilterType=="DistributionGroupMembers" && MemberRecipientTypeDetails == "UserMailbox" && DistributionGroupIsDirSynced == "False" && !(Convert.ToString(DistributionGroupType).Contains("SecurityEnabled"))
DescriptionOnline distribution groups members

Mappings:

DestinationOperatorSource
Resource Business keyMapDistributionGroupGuid
Account - CBKLookupBusinessKey=MemberExternalDirectoryObjectId
DescriptionMapMemberRecipientTypeDetails
MemberExternalDirectoryObjectIdMapMemberExternalDirectoryObjectId

Administrative roles – Resource

Parameters:

ParameterValue
SourceAdministrative resources
FilterType=="RoleGroups"
DescriptionRole Groups

Mappings:

DestinationOperatorSource
Business keyExpressionstring.Format("<system>{0}</system><resource>{1}</resource>",BuiltIn.SystemShortName, RoleGroupSamAccountName.ToLower() )
Security resource business keyExpressionstring.Format("<system>{0}</system><resource>{1}</resource>",BuiltIn.SystemShortName, RoleGroupSamAccountName.ToLower() )
NameMapRoleGroupName
CategoryConstantGroup
TypeConstantExchange Admin Role Group
Short NameExpressionstring.Format("{0}_{1}", BuiltIn.SystemShortName, RoleGroupName)
Logical keyExpressionstring.Format("{0}_{1}", BuiltIn.SystemShortName, RoleGroupName)
Distinguished nameMapRoleDistinguishedName
DescriptionMapRoleGroupDescription
ScopeMapScope
RoleGroupTypeMapRoleGroupType

Administrative Roles – Resource Assignments

Parameters:

ParameterValue
SourceAdministrative resources
FilterType=="Members" && RecipientType?.ToString().IndexOf("Group") \< 0 && MemberRecipientTypeDetails =="UserMailbox"
DescriptionOnline role assignments

Mappings:

DestinationOperatorSource
Resource Business keyExpressionstring.Format("<system>{0}</system><resource>{1}</resource>",BuiltIn.SystemShortName, RoleGroupSamAccountName.ToLower() )
Account - CBKLookupBusinessKey=MemberId
Business keyExpressionstring.Format("<account>{0}</account><resource>{1}</resource><target>{2}</target>", MemberName, MemberRecipientTypeDetails, RoleGroupSamAccountName.ToLower())
DescriptionMapMemberRecipientTypeDetails
MemberNameMapMemberName

Administrative Role – Resource Parent Child

Parameters:

ParameterValue
SourceDistribution groups
FilterType=="DistributionGroupMembers" && MemberRecipientTypeDetails != "UserMailbox"
DescriptionOnline distribution groups members - groups, sharedmailbox, roommailbox, equipmentmailbox

Mappings:

DestinationOperatorSource
IndirectConstant0
Parent resource business keyMapDistributionGroupGuid
Child resource - business keyLookupBusinessKey=MemberExternalDirectoryObjectId