Customer and User Provisioning
This page covers core customer and user lifecycle requests. Service assignment uses a larger contract documented in Custom service provisioning.
Event rule sets
Choose a customer or user event and then the required phase:
| Object | Provision phases | Deprovision phases |
|---|---|---|
| Customer | PreProvision, Provision, PostProvision | PreDeprovision, Deprovision, PostDeprovision |
| User | PreProvision, Provision, PostProvision | PreDeprovision, Deprovision, PostDeprovision |
Each phase has Before, Main, and After rule sets. For example, a customer rule that must run after the standard provision action belongs under:
Event$Customer$After Provision
For a user:
Event$User$After Provision
Customer properties
The following properties are populated by the base customer request formatter. They are the customer values also inherited by customer-service and user-service requests.
| Property | Shape | Description |
|---|---|---|
CustomerID | Integer | Atria customer database identifier. |
CustomerShortName | String | Customer short name. |
CustomerLongName | String | Customer full/display name. |
CustomerPath | String | Customer OU path. |
CustomerContact | String | Customer contact name. |
CustomerContactEmail | String | Customer contact email address. |
CustomerObjectID | Integer | Provisioning object identifier used for status tracking. |
PrimaryDomain | String | Customer primary domain. |
CustomerOUName | String | Calculated customer OU name. |
CustomerGroupsOU | String | Configured container for customer groups. |
UniquePrimaryDomain | Boolean | Whether the primary domain must be unique. |
CustomerKey | String | Value of the configured customer key property. |
CustomerKeyAttribute | String | Directory attribute used as the customer key. |
CustomerRolesAttribute | String | Directory attribute used for customer role data. |
isHMCReseller | Boolean | Whether the customer is an HMC reseller. |
isPrepay | Boolean | Whether the customer is prepaid. |
isDemo | Boolean | Whether the customer is a demo customer. |
isHEM | Boolean | Hosted Exchange mode flag; the base formatter sets this to False. |
RequestedByUserID | Integer | Requesting Atria user ID when a logged-in user exists. |
RequestedBy | String | Requesting user's UPN, or Anonymous when no logged-in user exists. |
ImpersonatedBy | String | Impersonating user's UPN; present only during impersonation. |
The core customer provision/update request also adds these values. CustomerDomains is added to the core customer main request for both provision and deprovision; the remaining values below are provision/update additions and should not be assumed on deprovision or service requests.
| Property | Shape | Description |
|---|---|---|
CustomerDomains | String array | Customer domains. |
CustomerRoles | String array | Customer role directory groups. |
isRemoteUsersEnabled | Boolean | Whether remote linked users are enabled. |
CustomerProperties | Hashtable | Customer Active Directory properties. |
CustomerLevel | Integer | Customer hierarchy level. |
ResellerCustomerID | Integer | Parent reseller customer ID; present when CustomerLevel is greater than 1. |
ProxyServiceProperties | Hashtable | Effective Proxy service properties. |
Customer example
Condition:
{CustomerLevel} > 1 AndAlso {ResellerCustomerID} > 0
PowerShell action script:
Import-Module Atria.Tools
Set-AtriaConfig -ConfigKey 'Provisioning_Customer_{CustomerID}' -ConfigValue $true -UseEnvironment
User properties
The base user request formatter includes the base customer properties above and then adds:
| Property | Shape | Description |
|---|---|---|
UserID | Integer | Atria user database identifier. |
Username | String | User sAMAccountName. |
Userfullname | String | User full/display name. The property name uses a lowercase f for compatibility. |
UserEmail | String | Primary SMTP address, falling back to the UPN. |
UserExternalEmail | String | External/recovery email address. |
UserObjectID | Integer | Provisioning object identifier for the user. |
IsX500Enabled | Boolean | Whether X500 support is enabled for the customer. |
UserDBProperties | Hashtable | User properties stored in Atria plus provisioning add-on values. |
EmailAddresses | String array | User SMTP addresses. |
SystemDomain | String | Customer system domain. |
The main core user provision and deprovision request formatter also adds:
| Property | Shape | Description |
|---|---|---|
UserProperties | Hashtable | User Active Directory attributes. |
SpecificProperties | Hashtable | Atria user-specific properties. May contain protected values. |
UserPathAttributes | Hashtable | Attributes used to build the user OU path. |
OrganisationalStructure | String | Effective user organisational structure. |
CustomerOrganisationalStructure | String | Customer organisational structure. |
UserServices | String array | Names of enabled user services. |
UserConnectors | String array | Names of provisioned connectors. |
UserPath | String | Effective user OU path. |
WebServiceConnection | Object | Directory web-service connection object. Pass only to compatible actions. |
UserRoles is added to the core provision/update request. It is not part of the base delete request.
User examples
Read the first SMTP address:
{EmailAddresses}(0)
Read an Active Directory attribute from the user-property hashtable:
{UserProperties}("department")
Check that the user has a particular top-level value before running an action:
Not String.IsNullOrEmpty({UserEmail})
Provision versus deprovision
The same base identity values are used for provision and deprovision so removal rules can locate the external object. Values describing a newly selected package, new password, or updated role list may be absent or may reflect the stored pre-removal state.
Always test a deprovision rule with an actual journalled deprovision request. Do not copy a provision-only condition into a destructive removal rule without checking the property contract.