Skip to main content

Data import

General settings

SettingDescription
NameType a unique name for the system. Two systems cannot have the same name.
System IDType a unique System ID for the system. Two systems cannot have the same System ID. You cannot change this setting.
DescriptionType an optional description of the system.
StatusStatus of the system.

Set the status to Removed to ensure the system is no longer included in warehouse imports, reconciliation, or provisioning.

Setting a system as Removed will delete all objects referring to the system, including resources, manual and automated provisioning tasks, and assignment policies.
ContentThis option is disabled and can be selected only when onboarding the Exchange Online Connector.
TrustsSelect one or more trusted systems to associate with the system.
Prevent self-serviceOptionally, decide if it will be possible or not to request the resource in a self-service requests in that system.

Connection details

SettingDescription
AuthenticationThe authentication method to use with the Exchange system. You can use the following authentication methods:

- Certificate thumbprint (on-premises only, not available in Omada Identity Cloud)
- Certificate with password

Connection URIThe URL for Exchange Online PowerShell.

In order to find the appropriate URL for your Exchange Online organization, go to: Microsoft documentation and Outlook documentation.
UsernameThe username for the user to authenticate against the Exchange server.
PasswordThe password for the user to authenticate against the Exchange server.

Each time that you make a change to any of the settings in the Connection details dialog box, you must type your password again.
OrganizationSpecifies the organization that is used. Be sure to use an .onmicrosoft.com domain for the parameter value.
Application IDSpecifies the application ID of the service principal that's used in certificate based authentication.
Certificate thumbprintSpecifies the thumbprint value of the certificate used for certificate based authentication. Available only when the Certificate thumbprint is selected in the Authentication field.
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.
Session optionsAdvanced options using New-PSSessionOption.

For information about possible parameters and their functions, refer to the New-PSSessionOption article or the PSSessionOption Class article.

-SkipCACheck -SkipCNCheck -SkipRevocationCheck
Import threadsConfigure the number of simultaneous PowerShell sessions to use for retrieving the Send as and Full access information and speed up the run time for these two permissions.

Use this setting for an asynchronous PowerShell to speed up the run time, wherever possible. Members of admin groups are fetched asynchronously. The default value is 1 (one).
Test connectionEnable this setting to test the connection information that you have specified.

If you want to use this functionality you must install Omada Provisioning Service and make sure it has the necessary permissions to communicate with the target system.

Queries and mappings

Out of the box, the Exchange Online Connectivity provides the mappings listed below. The suggested list of destinations to have the History checkbox enabled:

  • ADDITIONAL_EMAILS
  • HIDEINADDRESSLIST
  • ISSUEWARNINGQUOTA
  • PROHIBITSENDQUOTA
  • PROHIBITSENDRECEIVEQUOTA
  • WEBMAIL

Role Groups (Resource)

Parameters

ParameterValue
SourceAdministrative resources
DistinctNo
FilterType=="RoleGroups"

Mappings

DestinationOperatorSource
Business keyExpressionstring.Format("01",BuiltIn.SystemShortName, RoleGroupSamAccountName.ToLower() )
Security resource business keyExpressionstring.Format("01",BuiltIn.SystemShortName, RoleGroupSamAccountName.ToLower() )
NameMapRoleGroupName
CategoryConstantGroup
TypeConstantExchange Admin Role Group
Distinguished nameMapRoleDistingushedName
DescriptionMapRoleGroupDescription
ScopeMapScope
RoleGroup TypeMapRoleGroupType

Members group (Resource parent/child)

Parameters

ParameterValue
SourceAdministrative resources
DistinctNo
FilterType=="Members" && RecipientType?.ToString().IndexOf("Group") !=-1

Mappings

DestinationOperatorSource
IndirectConstant0
Parent resource business keyExpressionstring.Format("01",BuiltIn.SystemShortName, RoleGroupSamAccountName.ToLower() )
Child resource - business keyLookupDistinguishedName=MemberDistinguishedName

User mailboxes (Resource assignment)

Parameters

ParameterValue
SourceMailboxes
Mailbox subtypeUserMailbox,LinkedMailbox
DistinctNo
FilterType=="User mailbox"

Mappings

DestinationOperatorSource
Resource Business keyExpression
string.Format("<system>{0}</system><genericresource>{1}</genericresource>",BuiltIn.SystemShortName,RecipientTypeDetails)
Account - CBKLookupName=GrantSendOnBehalfTo
Business keyExpressionType=="User mailbox"?""+ExchangeGuid+"":null
PRIMARY_EMAILMapPrimarySmtpAddress
ADDITIONAL_EMAILSMapEmailAddresses
HIDEINADDRESSLISTMapHiddenFromAddressListsEnabled
ISSUEWARNINGQUOTAMapIssueWarningQuota
PROHIBITSENDQUOTAMapProhibitSendQuota
PROHIBITSENDRECEIVEQUOTAMapProhibitSendReceiveQuota
WEBMAILMapOWAEnabled
MAILBOXLOCATIONMapMailboxLocation

Shared mailboxes (Resource assignment)

Parameters

ParameterValue
SourceMailboxes
Mailbox subtypeDiscoveryMailbox, EquipmentMailbox, GroupMailbox, LegacyMailbox, LinkedMailbox, LinkedRoomMailbox, RoomMailbox, SchedulingMailbox, SharedMailbox, TeamMailbox
DistinctNo
FilterIdentity != null && Type !="Full access" && Type !="Send as" && Type !="Send on behalf"

Mappings

DestinationOperatorSource
Resource Business keyExpressionstring.Format("01",BuiltIn.SystemShortName,RecipientTypeDetails)
Account - CBKLookupName=GrantSendOnBehalfTo
Business keyExpressionType=="User mailbox"?""+ExchangeGuid+"":null
PRIMARY_EMAILMapPrimarySmtpAddress
ADDITIONAL_EMAILSMapEmailAddresses
HIDEINADDRESSLISTMapHiddenFromAddressListsEnabled
ISSUEWARNINGQUOTAMapIssueWarningQuota
PROHIBITSENDQUOTAMapProhibitSendQuota
PROHIBITSENDRECEIVEQUOTAMapProhibitSendReceiveQuota
LINKEDMAILBOXDOMAINMapLinkedMasterAccount
WEBMAILMapOWAEnabled
MAILBOXLOCATIONMapMailboxLocation

Mailbox access (Resource assignment)

Parameters

ParameterValue
SourceMailbox access
Mailbox subtypeUserMailbox,EquipmentMailbox,RoomMailbox,SharedMailbox,LinkedMailbox
DistinctNo
FilterLinkedMasterAccount != null && LinkedMasterAccount != "NT AUTHORITY"

Mappings

DestinationOperatorSource
Resource Business keyExpressionstring.Format("01",BuiltIn.SystemShortName, Type == "Full access" ? "fullmailboxaccess": "sendasmailboxaccess")
Account - CBKLookupName=GrantSendOnBehalfTo
Target - CBKExpressionstring.Format("0_1", BuiltIn.SourceSystemID, ExchangeGuid)
Business keyExpression
string.Format("<account>{0}</account><resource>{1}</resource><target>{2}</target>", LinkedMasterAccount, Type, ExchangeGuid)
LinkedMasterAccountMapLinkedMasterAccount
AccessTypeMapType
MAILBOXREFExpressionstring.Format("0_1", BuiltIn.SourceSystemID, ExchangeGuid)

Send on behalf (Resource assignment)

Parameters

ParameterValue
SourceMailboxes
Mailbox subtypeUserMailbox,LinkedMailbox,DiscoveryMailbox,EquipmentMailbox,GroupMailbox,LegacyMailbox,LinkedRoomMailbox,RoomMailbox,SchedulingMailbox,SharedMailbox,TeamMailbox
DistinctNo
FilterType=="Send on behalf"

Mappings

DestinationOperatorSource
Resource Business keyExpressionstring.Format("0sendonbehalfofmailboxaccess",BuiltIn.SystemShortName)
Account - CBKLookupPath=GrantSendOnBehalfTo
Target - CBKExpressionstring.Format("0_1", BuiltIn.SourceSystemID, ExchangeGuid)
Business keyExpressionstring.Format("012", GrantSendOnBehalfTo, Type, ExchangeGuid)
PRIMARY_EMAILMapPrimarySmtpAddress
IdentityMapIdentity
RecipientTypeDetailsMapRecipientTypeDetails
ExternalDirectoryObjectIDMapExternalDirectoryObjectID
GrantSendOnBehalfToMapGrantSendOnBehalfTo
MAILBOXREFExpressionstring.Format("0_1", BuiltIn.SourceSystemID, ExchangeGuid)

Role assignments (Resource assignment)

Parameters

ParameterValue
SourceAdministrative resources
DistinctNo
FilterType=="Members" && RecipientType?.ToString().IndexOf("Group") < 0

Mappings

DestinationOperatorSource
Resource Business keyExpressionstring.Format("01",BuiltIn.SystemShortName, RoleGroupSamAccountName.ToLower() )
Account - CBKLookupUID=MemberName
DescriptionMapRecipientType

Distribution groups (Resource)

note

By default, there is only one query for distribution groups. To onboard distribution groups and separately mail-enabled security groups, apply additional filtering. Use the DistributionGroupType attribute - provide the SecurityEnabled value to provision mail-enabled groups.

Parameters

ParameterValue
SourceDistribution groups
DistinctNo
FilterType==""DistributionGroups"

Mappings

DestinationOperatorSource
Business keyMapDistributionGroupGuid
Secret resource business keyMapDistributionGroupName
NameMapDistributionGroupName
CategoryConstantDistribution Group
TypeConstantExchange Distribution Group
Display nameMapDistributionGroupDisplayName
Account - CBKLookupBusinessKey=MemberExternalDirectoryObjectId

Default source fields

Add the DistributionGroup prefix to use any other field returned by the Get-DistributionGroup command. Example: To get the alias field, add the mapping for DistributionGroupAlias.

DistributionGroupName
DistributionGroupDisplayName
DistributionGroupDistinguishedName
DistributionGroupType
DistributionGroupPrimarySmtpAddress
DistributionGroupManagedBy
DistributionGroupHiddenFromAddressListsEnabled
DistributionGroupRequireSenderAuthenticationEnabled
Type

Distribution group members (Resource assignment)

Parameters

ParameterValue
SourceDistribution groups
DistinctNo
FilterType==""DistributionGroupMembers"

Mappings

DestinationOperatorSource
Resource business keyMapDistributionGroupGuid
Account - CBKLookupBusinessKey = MemberName

Default source fields

Add the Member prefix to use any other field returned by the Get-DistributionGroupMember command. Example: To get the ExchangeGuid field, add the mapping for MemberExchangeGuid.

DistributionGroupName
MemberDistinguishedName
MemberName
MemberDisplayName
MemberAlias
RecipientType
Type

Extension script

Utilizing the PowerShell extension script is supported for the Exchange collector.

To enable it specify the Script file name, containing available functions, in the Connection details section.

You can implement extension script in two ways.

In the Queries and mappings section add a mapping with the Source parameter set to Script. Then configure the Function name parameter to indicate which function from the extension script file you want to utilize. Then specify the required mappings.

Queries_mapping_script

Alternatively, for the queries with source set to Mailboxes there is an additional parameter Extension attribute function name. The specified function is then performed after retrieving the mailboxes. This provides additional attributes, that are otherwise not available with the Get-Mailbox command.

This way PSObjects are returned with the ExchangeGuid, used for mapping results of the function mailbox return by query, and required attributes.

Advanced queries and mappings configuration

If you require any custom mappings for your system implementation, this section describes the details of the fields available in the Queries and mappings task.

This collector supports any number of queries and has the following query parameters which should be specified when creating or editing a query.

  • In the Distinct field, you can specify if the collector should remove possible duplicate rows.
  • In the Filter field under the Parameters section, you can provide a Dynamic Expresso expression that is used for filtering the data imported into Omada Identity. It returns a TRUE/FALSE result for each imported data row. If the expression returns "FALSE" for the given row that row is skipped during import.

The filter can be supplied with special functions #MinRow() or #MaxRow(). The #MinRow()/#MaxRow() are custom functions that can be combined with regular DynamicExpresso expressions thanks to the # prefix, for example, in line:

#MinRow(col1, col2)#col=="active"

the custom function is encapsulated with # at the start and optionally at the end - if a regular filter is to be appended like in the example (col=="active").

The MinRow()/MaxRow() functions take two parameters. The intention is similar to a Group by function in SQL server that allows you to eliminate duplicates and to take the lowest or highest*[order by column] for each [unique column] row, i.e., MinRow([unique column], [order by column])*.

Naming convention for mapping and expressions

The name used for mapping or expressions is converted into a name that is usable as a C# parameter.

Names can contain the characters _, a-z, A-Z, and 0-9, but the first character of the name cannot be a digit (0-9).

Furthermore, any forbidden characters will be stripped from the name under the conversion.

For example, $somekey1 becomes somekey1 and 1another_key becomes another_key.

Overriding onboarding configuration in import profile

To decrease the import time you can override the SendAs and FullAccess onboarding values in the import profile from the true, to the false value. Those exclude import of SendAs or FullAccess permissions respectively while executing Mailbox access query.

To do so, go to Import profile and add a separate line in the Overridden onboarding configuration field for each setting you want to override.

Each entry for a configuration value should be in a separate line and have a following format: 1SettingName=NewValue.

Advanced settings

When selecting the Use cache checkbox the executed PowerShell commands to get data from Exchange will be stored in local cache. When the same command is executed again for a different query, the result will be taken from cache resulting in faster execution.

Configure thresholds

The Configure thresholds function allows you to set the amount of changes that cannot be exceeded, relevant to the last import.

In the Configure import thresholds window, type a number (integer) in percentage for New objects, Modified objects, and Deleted objects to enable thresholds for the import of objects from this system.

The value for each operation is by default set to 0, which means that no threshold calculations take place for the operation(s) until you change the integer.

Account rules

Accounts reside in Microsoft Entra ID, and the mailboxes refer to the accounts in these systems, so there is no configuration required for the Exchange Online Collector in this regard. For the already onboarded Microsoft Entra ID system, default account rules are provided, or you may have configured your own, but if you want to match the Shared, Room and Equipment Mailboxes additional configuration is required, see the section below.

Shared, Room and Equipment Mailboxes configuration

The section contains information relevant for managing the Shared, Room, and Equipment mailbox resource types. If You are interested only in managing User Mailboxes, disable the Queries & Mappings for Shared, Room, and Equipment Mailbox resource types.

When a Mailbox is created in Exchange (no matter if it is a Shared, Room, Equipment Mailbox, etc.), a corresponding account is created in Microsoft Entra ID. For these mailbox types a disabled account is automatically created. As part of the import from Exchange we lookup the account of the mailbox in Microsoft Entra ID and assign the mailbox to the account as a resource assignment. The accounts are imported to ODW as part of the Microsoft Entra ID import. This means that importing from this system must have run before or together with Exchange import.

The Accounts for all the non-personal mailboxes must be matched to an Identity in Omada Identity, to avoid creating a Personal Identity per mailbox, we suggest creating a Technical Identity for each type of mailbox (you can also choose to create additional Technical Identities if you want to separate the ownership even further).

Since RoPE only allows to assign [one]{.underline} account of the Personal account type to an Identity, it is required to create new account types to handle Room, Equipment, or Shared Mailboxes.

The following section explain how these accounts can be matched to Technical Identities. Additionally, information required to properly configure Request Access process are provided ensuring requesting access for shared, room, and equipment mailboxes works properly.

Technical identities

Create three Technical Identities using the Request technical identity process and assign them to the Exchange system in Omada Identity.

For the three Technical Identities the Last name property is used to specify the value of the mailbox type (RoomMailbox, SharedMailbox, EquipmentMailbox) as that will be imported from Microsoft Entra ID as an extension attribute.

Technical-Identities

New Account Types

It is required to create new Account Types to support matching multiple accounts to same Technical Identity.

Account-Types

Assign Account type to Exchange resources
note

Prior to assigning Account type to Shared, Room, and Equipment Mailbox resources, an import from Exchange must be performed.

The Shared, Room, and Equipment Mailbox resources must have corresponding Account types configure.

resources

When a resource is opened, the Account types field can be found in the Advanced section of settings.

New Resource Type

It is required to create a new Resource Type. The new Account Resources use them, as we do not want to reuse the AAD account Resource Type since that contains attribute sets specific for user accounts in Microsoft Entra ID. The new Mailbox Account Resource Type can be used for all the new required Account Resources.

ResourceType

New Account Resources

It is required to create new Account Resources, one for each Account Type for each Microsoft Entra ID system.

account_resources

Additionally, go to Setup > Master Data> Account Resources and for each of the created Account Resources set the Skip provisioning setting to true.

Skipping provisioning

To enable skip provisioning setting for an account resource, do the following:

  1. Go to Account Resources and open the resource you would like to configure.

    account-resources

  2. Go to Fulfillment section of settings and enable the Skip provisioning option.

    Account-resources-settings

Extension Attribute

Importing mailboxes type directly from Microsoft Entra ID is impossible. To obtain it use following naming convention and mapping:

userPrincipalName.ToLower().Contains("room") ? "RoomMailbox" : 
userPrincipalName.ToLower().Contains("shared") ? "SharedMailbox" : 
userPrincipalName.ToLower().Contains("equipment") ? "EquipmentMailbox" : 
"Unknown"
Account Rules

New Account Rules must be created to match the accounts with the Technical Identities. You must create Ownership and Classification rules for each mailbox type, for example:

example1

example2

Verification

As an example, the accounts and resource assignments for Room Mailboxes are matched to the T0003 Technical Identity with Last name set to RoomMailbox, as shown below:

Verification