Standard extensions
Generic extension for mapping ODW attributes to OPS provisioning attributes
The extension is typically used when a target system requires an internal identifier to modify or deprovision an account and this identifier is not represented in the ES. In that situation the extension can be used to fetch the identifier directly from the ODW and assign it to a RoPE attribute which can then be used by the OPS. Any attribute to be mapped to RoPE needs to be specified using the following format:
<add key="**UNIQUE KEY (e.g. number)**" extraInfo="**RESOURCE TYPE DISPLAY NAME**" name="**ODW ATTRIBUTE NAME**" value="**ROPE PROVISIONING ATTRIBUTE NAME**" />
Alternatively, if you want to refer to the resource directly (e.g. due to ambiguous resource type names), use the following format:
<add key="**UNIQUE KEY (e.g. number)**" extraInfo="UID:**RESOURCE TYPE UID**" name="**ODW ATTRIBUTE NAME**" value="**ROPE PROVISIONING ATTRIBUTE NAME**" />
<add type="Omada.RoPE.Controller.OISX.Extensions.MapAttributesFromActualDataExtension, Omada.RoPE.Controller.OISX">
<settings>
<add key="1" extraInfo="ServiceNow Group" name="snowAssignmentID" value="SERVICENOW_ASSIGNMENT_ID" />
<add key="2" extraInfo="ServiceNow Role" name="snowAssignmentID" value="SERVICENOW_ASSIGNMENT_ID" />
</settings>
</add>
Actual account name
Configuration and example
The Actual Account Name extension is configured by default when installing RoPE version v14. The extension is configured through the C:\\Program Files\\Omada Identity Suite\\Role and Policy Engine\\Service\\ConfigFiles\\EngineConfiguration.config
file.
<add type="Omada.RoPE.Controller.OISX.Extensions.ActualAccountNameComputer, Omada.RoPE.Controller.OISX\" />
The extension has no configuration options.
The extension can be removed from the configuration if you do not wish to use it. This will save computation time and storage.
Additional assignment creator for context resources
This extension adds additional resource assignments for resources that are referred by the contexts in which an identity is. You can use the concept together with the assignment policies or as an alternative to the assignment policies.
The extension works for all types of context objects, not just org. units.
Organizational unit data object type has built in Resource reference property (with system name: ROLESREF
) that links Resource data objects to Org. unit data objects. You must use the extension in order to have the referred resources assigned to the identities in an org. unit.
Configuration and example
You must adjust the RoPE configuration, to make sure it uses the extension:
<add type="Omada.RoPE.Controller.OISX.Extensions.AdditionalAssignmentCreatorForOrgUnitRoles, Omada.RoPE.Controller.OISX" >
<settings>
<add key="ResourceAttributes" value="ROLESREF"/>
</settings>
</add>
ResourceAttributes
is comma-delimited list of reference properties present on context objects to use to refer to resources that should be assigned to the identities in the contexts.
For the extension to work properly, you must register all reference properties specified in the ResourceAttributes
extension setting and also in the customer setting RoPEReferenceAttribs
. This change will force RoPE to treat them as reference type attributes.
Attestation survey
The extension creates CRAs with the reason Review OK if the identity has CRAs that have been approved in a verdict survey.
Note that a CRA caused solely by a Review OK reason cannot stand alone. There have to be other reasons as well. Otherwise, the extension removes the added CRAs again.
The extension disables assignments where you have selected Remove in the Verdict survey. The extension also adds an attribute called ApprovalInfo to the CRAs that have a verdict.
Configuration and example
The extension does not support any configuration settings.
<add type="Omada.RoPE.Controller.OISX.Extensions.AttestationSurveyExtension, Omada.RoPE.Controller.OISX" />
Attribute value resolver
The extension resolves and assigns the value(s) for assignment attributes based on configured data object reference paths and dynamic expressions. You can configure it with a number of attributes and corresponding reference paths or dynamic expressions.
Attribute values resolved with the Attribute Value Resolver extension takes precedence over existing attribute values for a CRA.
Reference path resolution
A reference path is resolved using the CRA as starting point. A reference path must start with either #IDENTITY"
, #RESOURCE
, or #ASSIGNMENTS_PER_RESOURCETYPE
.
A reference path can have a display name format. Use the prefix #ASSIGNMENTS_PER_RESOURCETYPE
to resolve attribute values for values assigned using the Resource driven attributes concept.
Reference path elements are evaluated before Expressions, which are described in the next section.
Expression resolution
The resolution of dynamic expressions use Dynamic Expresso which is an interpreter for simple C# statements.
An expression must return one of the supported data types:
bool
DateTime
int
String
Guid
(reference)
The returned value of an expression must match the data type of the attribute which the resolved value is for. If it doesn't match, it will result in an error.
The following parameters can be used in an expression:
Built-in RoPE assignment data:
ROPE_AssignmentKey
ROPE_IdentityId
ROPE_AccountTypeId
ROPE_AccountName
ROPE_AccountAssignmentKey
ROPE_Differentiator
ROPE_ResourceId
ROPE_ResourcePoolId
ROPE_AssignmentTypeId
ROPE_ValidFrom
ROPE_ValidTo
ROPE_Disabled
ROPE_PreValid
ROPE_ReasonTypes
RoPE assignment attribute values on the form ROPE_ATTR_<attribute name
, for instance:
ROPE_ATTR_FIRSTNAME
ROPE_ATTR_LASTNAME
ROPE_ATTR_IDENTITYID
ROPE_ATTR_OUID
ROPE_ATTR_INITIALPASSWORD
Customer settings on the form CUSTSETTING_<customer setting key>
:
CUSTSETTING_ContractorMaxValidity
Data connections on the form DATACONNECTION_<data connection_name>_<data connection_element>
, for instance:
DATACONNECTION_RoPE_InitialCatalog
Expression elements are evaluated after Reference path elements. It means that the result of a Reference path can be used inside an Expression element. Moreover, Expression elements are evaluated in the order of appearance in the configuration file. An expression can use the result of another expression configured above it in the configuration file.
More information about Dynamic Expresso can be found in the GitHub documentation.
Configuration and example
The extension can be configured with a number of settings. Each setting represents how the value for an attribute should be resolved.
This extension supports the following configuration settings:
XML attribute on a setting | Description |
---|---|
key | Unique key for the setting. |
name | Specifies the attribute to resolve value(s) for. You can optionally specify that it should only be done for CRAs for resources of a specific resource type. However, it is recommended that you specify this in extraInfo instead. Has the format: [Resource type name]:[attribute property system name] |
extraInfo | Semicolon-delimited key value pairs. The supported keys are: - Type (required) : must specify either ReferencePath or Expression .- ResourceType (optional): must specify the name of a resource type. - MultiValue (optional): When set to True, all available resource driven attributes will be applied and not only the value with the highest priority. Examples: Type:Expression;ResourceType:Group Type:ReferencePath Type:ReferencePath; MultiValue:True Note: In versions earlier than May 2025 Cloud Update, Type:ReferencePath;MultiValue:True must be written without a space. For more information, see Resolved issues and bugs fixed for May 2025. |
value | Specifies how the attribute value should be resolved. If the resolution is of type ReferencePath then the value must specify a reference path that is evaluated with the CRA as starting point. A reference path must start with either #IDENTITY , #RESOURCE , or #ASSIGNMENTS_PER_RESOURCETYPE . A reference path can have a display name format. If the resolution is of type Expression then value must specify a dynamic expression. |
Example 1
We resolve and assign the value of the CRA attribute MBOXSIZE by evaluating a Reference path. Resolution is only done if the CRA is for a resource of the type AD account.
Resolution is done as follows: Look in the other CRAs in the calculation > Find the subset that are for resources of the resource type Mailbox size > Get the value of the assignment's MBOXSIZE attribute.
Example 2
We resolve and assign the value of the CRA attribute OUID by evaluating an Expression.
Resolution is done by executing the C# string.Format
method and using the current value of the OUID attribute as the parameter.
Business context
The extension disables all calculated assignments for an identity if the identity has no primary context. More specifically, if the identity has a primary context type specified, but is not a member of the context, all assignments are disabled.
The purpose is to handle a scenario with a contractor that works for a business partner (primary context) and has assignments for a project. If the organization terminates the business partner, this extension helps you to remove the contractor's access.
Configuration and example
The extension does not support any configuration settings.
<add type="Omada.RoPE.Controller.OISX.Extensions.BusinessContextExtension, Omada.RoPE.Controller.OISX" />
Conditional inheritance evaluator
You can apply the ConditionalInheritanceEvaluator extension to implement Conditional inheritance in, for example, SAP scenarios. The goal of conditional inheritance is that a child resource is only assigned to an identity if it has the same attribute as the identity (either inherited from the identity object or one of its context assignments).
Configuration
You can configure the attributes to match on and whether just a single match is required, or all attributes must match.
<add type="Omada.RoPE.Controller.OISX.Extensions.ConditionalInheritanceEvaluator, Omada.RoPE.Controller.OISX">
<settings>
<add key="ObjectType:Resource" value="OUREF"/>
<add key="MatchContextMembershipTo" value="OUREF"/>
<add key="RequireFullMatch" value="false"/>
</settings>
</add>
This extension supports the following configuration settings:
ObjectType:Resource
- type a comma-delimited list of system names of properties that are on the data object type, for example the resource data object type.MatchContextMembershipTo
- if defined, the child resource value is matched towards all the context assignments of the identity. The child resource value is configured as a custom reference property on the resource data object type.RequireFullMatch
- set it to True to require a match on all the stated properties. If you set it to false, only one match is required.
The value configured in MatchContextMembershipTo
and ObjectType:Resource
is a (single value) property system name.
If the rules defined with ObjectType:Resource
is combined with the MatchContextMembershipTo
rule, then the RequireFullMatch
setting defines the result. If full match is required, all rules must resolve true. If not set, at least one of the rules must resolve true.
Example
In the RoPE extension configuration, we set the MatchContextMembershipTo
to OUREF
and we add the OUREF
property to the Resources data object type.
When RoPE then traverses the child resources of a role, it will only assign the child resource if the OUREF
of the child resource is within the context memberships of the identity. Only direct context memberships are evaluated, i.e., not parent contexts.
Consider an SAP system in which a number of functionally equivalent SAP roles exist which are created for various departments. The SAP roles are grouped in functional enterprise roles that are assigned to the employees.
The goal is that an employee only gets the SAP roles contained in their functional roles that are defined for their department. That's why in the example below, Susan gets the Approve Purchase Order role specifically for Chicago:
Disable conditional inheritance
When the extension is enabled, it is evaluated for all resource parent child relations unless disabled with the Boolean property Disable conditional inheritance available on the data object type Resources.
As its name imply, when Disable conditional inheritance available is set to True on the parent resource, the conditional inheritance is disabled, and the child resources are assigned unconditionally (even if the rules of the extension are not met).
Constraint evaluator
The extension is part of the Separation of Duties feature in Omada Identity.
Configuration and example
In this extension, specify the following attribute: CalculateSurvivor
.
If a survivor is calculated (set to true): In case of a violation between two resource assignments, one of the resource assignments is allowed and the other one is blocked.
If a survivor is not calculated (set to false): the assignments in violation are immediately blocked. However, if one or more of these assignments are already provisioned into the target systems, they will not be deprovisioned before the blocking of the assignments has been approved in the violation evaluation process. They are sent to the "Pending deprovisioning" state.
<add type="Omada.RoPE.Controller.OISX.Extensions.ConstraintEvaluatorExtension, Omada.RoPE.Controller.OISX">
<settings>
<add key="CalculateSurvivor" value="false"/>
</settings>
</add>
Default account name resolver
This extension computes the default account names for an identity. An identity can have a default account name per account resource defined in Omada Identity. A default account name is calculated using the account name format specified in the resource type.
Due to a data model change in the April Cloud release, the previously customized extension does not work anymore and has to be updated.
Configuration and example
The extension does not support any configuration settings.
<add type="Omada.RoPE.Controller.OISX.Extensions.DefaultAccountNameResolver, Omada.RoPE.Controller.OISX" />
Delegate access
The extension is part of the Delegate access feature in Omada Identity.
Configuration and example
The extension does not support any configuration settings.
<add type="Omada.RoPE.Controller.OISX.Extensions.DelegateAccessExtension, Omada.RoPE.Controller.OISX" />
Differentiator
The purpose of the Differentiator RoPE extension is to define the differentiator concept for resource assignments to avoid its automatic merging to the same resource based on the attributes.
If the attribute values are different, then, the Differentiator extension creates separate CRA's for the same resource.
The Differentiator was designed for short ID values.
Configuration and example
Using the extension, you can configure the differentiator attributes per resource type in the RoPE configuration.
To do so, add the following code snippet to the RoPE configuration and adjust the differentiator attributes as needed:
<add type="Omada.RoPE.Controller.OISX.Extensions.AssignmentAttributeValueDifferentiator, Omada.RoPE.Controller.OISX" >
<settings>
<add key="<resource type unique identifier>" value="<comma-separated list of attribute system names>"/>
</settings>
</add>
For example, for the Exchange Mailbox Access resource type and the Mailbox Location and Mailbox reference attributes, the code snippet looks as follows:
<add type="Omada.RoPE.Controller.OISX.Extensions.AssignmentAttributeValueDifferentiator, Omada.RoPE.Controller.OISX" >
<settings>
<add key="24bc28da-1b36-40bd-95a3-d4b5d344553d" value="MAILBOXLOCATION,MAILBOXREF"/>
</settings>
</add>
Usage example
For a reporting platform, the security model is defined by group permissions assigned per report, granting access to the particular report. When assigning a group to an account, a data set is assigned to scope the data presented in the report.
For example, a time registration report is scoped per organizational unit to allow granting permission to a manager to view the data report only for the people for whom the manager is responsible.
Since a manager may be responsible for more than one org. unit, there can be several assignments for one identity. Each assignment should be visible in Omada for access reviews, reporting, and such.
The Differentiator extension allows splitting multiple assignments to the same report on the organizational identifier used in the assignment by specifying the attribute in the configuration.
Exchange integration
The purpose of this extension is to prevent resource assignments to Exchange Mailbox resources from being merged into one resource assignment.
Configuration and example
The extension does not support any configuration settings.
<add type="Omada.RoPE.Controller.OISX.Extensions.ExchangeIntegrationExtension, Omada.RoPE.Controller.OISX" />