Release notes
Option for On Behalf Of (OBO) to Verify the User
The profile management feature has been enhanced with user verification. This will allow the OBO to verify the user either through SMS PIN or through TOTP. The user verification can be turned on/off per user management action level from the admin UI user management configuration UI, as shown below.
From the self-service UI, if the selected action requires user verification, the UI will show the' Verify the User' panel and requires either PIN or TOTP to proceed. The user has to read back the PIN/TOTP to the OBO user.
Google Connector Contact API Upgrade
Google connector was using the contact g-data API to manage contacts. The contact g-data API is retired now. Due to this, the connector has been modified to use the new People API for contact management. The attribute structure in new API is different from the old API. Contact attributes are modified to use new attribute structure without considering backward compatibility. Also, there are few changes in contact management behavior as detailed below.
Note: The scope needed to use this API is the same as it was for the Contact API that is now retired.
Plug-in Configuration ContactKeyAttribute
None of the attribute is mandatory for a contact, so it is not possible to use a predefined key attribute to uniquely identify contacts. To handle this, a new plug-in property is added to configure this.
Contact->changeType
Old contact modify process was depending on the entry level modify type to decide the contact operations during a user modify. It is difficult to identify the contact action based on modify type since the key attribute may not be unique in some cases. A contact level attribute is introduced to configure this. If this is not configured, it will try an add/modify based on contact existence for the configured key. Following is the behavior based each supported value.
Delete: For deleting a contact, resourceName is required. If the resourceName attribute is available in data, contact delete is processed with that. If resourceName is missing, modify processor will identify the contact with matching key attribute value and use it’s resourceName to delete the contact. If there is no matching contact for the key, the contact entry is skipped.
Modify: For updating a contact, resourceName and etag are required. If both attributes are available in data, contact modify is processed with those values. If any or both are missing, modify processor will identify the contact with matching key attribute value and use it’s resourceName and etag to update the contact. If the change type is modify and no matching contact exists for that key, the contact operation is marked as failure.
Add: When the change type is add, the contact is added without any key validation. So using a change type add can create duplicate contacts based on the key. To avoid this, we can keep the change type empty.
Mapping Between New and Old Contact Attributes
New Attribute | Old Attribute |
Contact->address->city | Contact->StructuredPostalAddress->city |
Contact->address->country | Contact->StructuredPostalAddress->country |
Contact->address->countryCode | Contact->StructuredPostalAddress->countryCode |
Contact->address->extendedAddress | Contact->StructuredPostalAddress->HouseName |
Contact->address->formattedType | Contact->StructuredPostalAddress->Label |
Contact->address->formattedValue | Contact->StructuredPostalAddress->FormattedAddress |
Contact->address->metadata->primary | Contact->StructuredPostalAddress->Primary |
Contact->address->metadata->verified | |
Contact->address->poBox | Contact->StructuredPostalAddress->poBox |
Contact->address->postalCode | Contact->StructuredPostalAddress->postalCode |
Contact->address->region | Contact->StructuredPostalAddress->region |
Contact->address->streetAddress | Contact->StructuredPostalAddress->Street |
Contact->address->type | Contact->StructuredPostalAddress->Usage |
Contact->address->type | Contact->PostalAddress->Label |
Contact->address->metadata->primary | Contact->PostalAddress->Primary |
Contact->address->formattedValue | Contact->PostalAddress->Value |
Contact->ageRange | |
Contact->ageRange->ageRange | |
Contact->ageRange->metadata->primary | |
Contact->ageRange->metadata->verified | |
Contact->biography->contentType | |
Contact->biography->metadata->primary | |
Contact->biography->metadata->verified | |
Contact->biography->value | |
Contact->birthday->date | Contact->Birthday |
Contact->birthday->metadata->primary | |
Contact->birthday->metadata->verified | |
Contact->birthday->text | |
Contact->emailAddress->displayName | Contact->Email->displayName |
Contact->emailAddress->formattedType | Contact->Email->Label |
Contact->emailAddress->metadata->primary | Contact->Email->Primary |
Contact->emailAddress->metadata->verified | |
Contact->emailAddress->type | Contact->Email->Label |
Contact->emailAddress->value | Contact->Email->Address |
Contact->etag | |
Contact->event->date | |
Contact->event->formattedType | |
Contact->event->metadata->primary | |
Contact->event->metadata->verified | |
Contact->event->type | |
Contact->gender->formattedValue | Contact->Gender |
Contact->gender->metadata->primary | |
Contact->gender->metadata->verified | |
Contact->gender->value | Contact->Gender |
Contact->imClient->formattedProtocol | |
Contact->imClient->formattedType | Contact->Im->Label |
Contact->imClient->metadata->primary | Contact->Im->Primary |
Contact->imCliens->metadata->verified | |
Contact->imClient->protocol | Contact->Im->Protocol |
Contact->imClient->type | Contact->Im->Label |
Contact->imClient->username | Contact->Im->Address |
Contact->interest->metadata->primary | |
Contact->interest->metadata->verified | |
Contact->interest->value | |
Contact->locale->metadata->primary | |
Contact->locale->metadata->verified | |
Contact->locale->value | Contact->Language->Code |
Contact->locale->value | Contact->Language->Label |
Contact->membership->contactGroupMembership->contactGroupId | Contact->Group->Name |
Contact->membership->domainMembership->inViewerDomain | |
Contact->membership->metadata->primary | |
Contact->membership->metadata->verified | |
Contact->name->displayName | Contact->FullName |
Contact->name->displayNameLastFirst | |
Contact->name->familyName | Contact->familyName |
Contact->name->givenName | Contact->givenName |
Contact->name->honorificPrefix | Contact->NamePrefix |
Contact->name->honorificSuffix | Contact->NameSuffix |
Contact->name->metadata->primary | |
Contact->name->metadata->verified | |
Contact->name->middleName | Contact->Initials |
Contact->name->phoneticFamilyName | |
Contact->name->phoneticFullName | |
Contact->name->phoneticGivenName | |
Contact->name->phoneticHonorificPrefix | |
Contact->name->phoneticHonorificSuffix | |
Contact->name->phoneticMiddleName | |
Contact->nickname->metadata->primary | |
Contact->nickname->metadata->verified | |
Contact->nickname->type | |
Contact->nickname->value | Contact->NickName |
Contact->occupation->metadata->primary | |
Contact->occupation->metadata->verified | |
Contact->occupation->value | Contact->Occupation |
Contact->organization->current | |
Contact->organization->department | Contact->Organization->Orgdepartment |
Contact->organization->domain | |
Contact->organization->endDate | |
Contact->organization->formattedType | Contact->Organization->Label |
Contact->organization->jobDescription | Contact->Organization->OrgjobDescription |
Contact->organization->location | Contact->Organization->Where |
Contact->organization->metadata->primary | Contact->Organization->Primary |
Contact->organization->metadata->verified | |
Contact->organization->name | Contact->Organization->Orgname |
Contact->organization->phoneticName | |
Contact->organization->startDate | |
Contact->organization->symbol | Contact->Organization->Orgsymbol |
Contact->organization->title | Contact->Organization->Orgtitle |
Contact->organization->type | |
Contact->phoneNumber->canonicalForm | Contact->PhoneNumber->URI |
Contact->phoneNumber->formattedType | Contact->PhoneNumber->Label |
Contact->phoneNumber->metadata->primary | Contact->PhoneNumber->Primary |
Contact->phoneNumber->metadata->verified | |
Contact->phoneNumber->type | |
Contact->phoneNumber->value | Contact->PhoneNumber->Number |
Contact->relation->formattedType | Contact->Relation->Label |
Contact->relation->metadata->primary | |
Contact->relation->metadata->verified | |
Contact->relation->person | Contact->Relation->Value |
Contact->relation->type | |
Contact->residence->current | |
Contact->residence->metadata->primary | |
Contact->residence->metadata->verified | |
Contact->residence->value | |
Contact->resourceName | Contact->Id |
Contact->skill->metadata->primary | |
Contact->skill->metadata->verified | |
Contact->skill->value | |
Contact->url->formattedType | Contact->Website->Label |
Contact->url->metadata->primary | Contact->Website->Primary |
Contact->url->metadata->verified | |
Contact->url->type | Contact->Website->Label |
Contact->url->value | Contact->Website->Href |
Contact->userDefined->key | |
Contact->userDefined->metadata->primary | |
Contact->userDefined->metadata->verified | |
Contact->userDefined->value | |
Contact->AdditionalName | |
Contact->BillingInformation | |
Contact->DirectoryServer | |
Contact->Email->Quota | |
Contact->Email->Rel | |
Contact->Jot->Value | |
Contact->MaidenName | |
Contact->Mileage | |
Contact->Priority | |
Contact->ShortName | |
Contact->StructuredPostalAddress->Agent | |
Contact->StructuredPostalAddress->MailClass | |
Contact->StructuredPostalAddress->Neighborhood | |
Contact->Subject |
Google Connector Support Group Rename
Google Apps connector has been enhanced to support rename of existing groups. To achieve this, the connector has modified to include a new attribute "Original_GroupEmail" to provide the current name. When a group is renamed, old name will be added as an alias by Google. So the group can be fetched using the the old name even after rename.
Microsoft Office 365 Support Get-MailboxStatistics
Microsoft Office 365 connector has been enhanced to support the Get-MailboxStatistics command for MailBox objects. LastLogonTime is the only attribute included from this command to date. This is a read only attribute and is available in export and lookup functions.
Connectors Support Custom Attribute Files
Attribute schema creation for connectors are enhanced to support custom attributes file that can be at Studio level or ORG level. ORG level file should be in the name custom_<OrgId>_<ConnectorDefinitionName>attrcfg.xml and Studio level file should be in the name custom_<ConnectorDefinitionName>attrcfg.xml. These files should under the folder where the default attribute files are kept - Fischer\Provisioning\dataforum\config. Including a sample xml below.
<prio:root xmlns:prio="http://www.fisc.com/prio/">
<prio:attributes type="Employee">
<prio:attribute>
<prio:Abbr>CustomAddress</prio:Abbr>
<prio:Name>CustomAddress</prio:Name>
<prio:subAttributes>
<prio:attribute>
<prio:Abbr>XPersonAddress</prio:Abbr>
<prio:Name>XPersonAddress</prio:Name>
<prio:subAttributes>
<prio:attribute>
<prio:Abbr>xperaAttr1</prio:Abbr>
<prio:Name>xperaAttr1</prio:Name>
</prio:attribute>
<prio:attribute>
<prio:Abbr>xperaAttr1Date</prio:Abbr>
<prio:Name>xperaAttr1Date</prio:Name>
</prio:attribute>
<prio:attribute>
<prio:Abbr>xperaAttr2</prio:Abbr>
<prio:Name>xperaAttr2</prio:Name>
</prio:attribute>
</prio:subAttributes>
</prio:attribute>
<prio:attribute>
<prio:Abbr>XStudentId</prio:Abbr>
<prio:Name>XStudentId</prio:Name>
<prio:subAttributes>
<prio:attribute>
<prio:Abbr>xStudentId</prio:Abbr>
<prio:Name>xStudentId</prio:Name>
</prio:attribute>
<prio:attribute>
<prio:Abbr>xStudentIdType</prio:Abbr>
<prio:Name>xStudentIdType</prio:Name>
</prio:attribute>
</prio:subAttributes>
</prio:attribute>
</prio:subAttributes>
</prio:attribute>
</prio:attributes>
</prio:root>
Active Directory Powershell Connector PDC Discovery
The PDC discovery for Active Directory powershell connector is modified to include -ForceDiscover switch to avoid any caching issue when PDC is got changed. Before the fix, an Identity/Provisioning/GIG tomcat restart was required. Also made changes to log the failure instead of throwing an exception when the PDC discovery is failed. This will make sure that all connector operations which doesn't require PDC will be suceeded.
Fixed defects
List of defects reported by customers or implementation, does not contain defects raised internally.
- Fixed issue with the Oracle HCM Employee-Atomfeeds data format export failing when InitialTransactionStartDate is given in DateTime format.
- Fixed issue with Workday Transaction Log data format export when the client machine time is slightly ahead. Adjusted transaction through date by a second to avoid the issue. When there is major difference is time, client machine time should be adjusted.
- Fixed issue in "Date Difference" mapper rule not considering leap year when date difference is calculated as Years.
- Fixed issues in Google connector resulted by case sensitive comparison while managing aliases with a modify type of replace.
- Fixed issue with Workflow Chainer configurations when product attribute display names are enabled.
- Fixed issue where the interactive password policy feature was displaying multiple times on the screen.
- Fix for logout issue in password reset pages due to bug in the interactive password policy feature.
- Fixed issue with update for Google Recaptcha Challenge not being displayed fully on the screen.
- Fixed issue where the password validation feature would exit the user from the user interface incorrectly if the password policy had "starts with" rule configured.
- Fixed issue where all the alias management configurations were not imported during an org import.
- Fixed issue with post import processing when a GIG associated import task in bulk mode is completed in non connectivity mode. For example, if all of the records were set with Transaction-ProcessEntry = 2 would cause this issue.
- Fixed issues with Gallagher Security filter management and API filter creation when there is left or right parentheses in the value field.
- Fixed issues where the mandatory field message was display by default on the Identity Claim - Profile Update screen.
- Fixed SQL error on resource listing when searching resources by system. This issue created an error on the screen that the org_id column was ambiguous.
- Fixed issue of Data Mapper Replace Value rule losing target value after )
- Fixed issue of not populating PSA groups for resource node when a new resource is added to an existing group node using configuration hub.