Which IIQ version are you inquiring about?
IdentityIQ 8.4p2
Share all details about your problem, including any error messages you may have received.
I’m configuring a SCIM 2.0 connector in IdentityIQ to manage Atlassian Cloud accounts. Account creation works fine using the provisioning policy, but updates to existing accounts aren’t applying. The modify operation generates a provisioning plan with the correct value in the master plan, and no errors appear. Other attributes are correctly filtered out because their values haven’t changed. (See logs below for details.)
I’m testing this using a custom rule in debug which sets up the Modify account request, but doesn’t pass any attribute requests since I want to test the provisioning policy setting the values.
I’ve included the application Update provisioning policy xml code below. The naming conventions of the attributes in the policy match the SCIM 2.0 schema, but I’m not sure if it will work to have it in the dot notation for name.familyName updates.
Any guidance would be much appreciated!
Please share any other relevant files that may be required (for example, logs).
(Logs) Compiled provisioning project:
<ProvisioningProject identity="V0123456">
<ExpansionItems>
<ExpansionItem application="Atlassian Cloud Manage Users" cause="ProvisioningPolicy" name="schemas" nativeIdentity="testaccount.dev@org.ca" operation="Add" sourceInfo="Atlassian Cloud Manage Users" value="urn:ietf:params:scim:schemas:core:2.0:User"/>
</ExpansionItems>
<Filtered>
<AccountRequest application="Atlassian Cloud Manage Users" nativeIdentity="testaccount.dev@org.ca" op="Modify">
<AttributeRequest name="userName" op="Set" value="testaccount.dev@org.ca">
<Attributes>
<Map>
<entry key="reason">
<value>
<FilterReason>Exists</FilterReason>
</value>
</entry>
</Map>
</Attributes>
</AttributeRequest>
<AttributeRequest name="name.givenName" op="Set" value="Jane">
<Attributes>
<Map>
<entry key="reason">
<value>
<FilterReason>Exists</FilterReason>
</value>
</entry>
</Map>
</Attributes>
</AttributeRequest>
<AttributeRequest name="emails.work.primary.value" op="Set" value="testaccount.dev@org.ca">
<Attributes>
<Map>
<entry key="reason">
<value>
<FilterReason>Exists</FilterReason>
</value>
</entry>
</Map>
</Attributes>
</AttributeRequest>
<AttributeRequest name="active" op="Set">
<Attributes>
<Map>
<entry key="reason">
<value>
<FilterReason>Exists</FilterReason>
</value>
</entry>
</Map>
</Attributes>
<Value>
<Boolean>true</Boolean>
</Value>
</AttributeRequest>
</AccountRequest>
</Filtered>
<MasterPlan>
<ProvisioningPlan>
<AccountRequest application="Atlassian Cloud Manage Users" nativeIdentity="testaccount.dev@org.ca" op="Modify">
<AttributeRequest name="name.familyName" op="Set" value="DoeTestFromProvisioningPolicy"/>
</AccountRequest>
</ProvisioningPlan>
</MasterPlan>
<ProvisioningPlan targetIntegration="Atlassian Cloud Manage Users" trackingId="1c72d6b9d19e4497bf9d54c33e3108a0">
<AccountRequest application="Atlassian Cloud Manage Users" nativeIdentity="1234ab4c-04c6-35e4-abb1-5ec1337fc4d6" op="Modify">
<AttributeRequest name="name.familyName" op="Set" value="DoeTestFromProvisioningPolicy"/>
<AttributeRequest name="schemas" op="Add" value="urn:ietf:params:scim:schemas:core:2.0:User"/>
</AccountRequest>
</ProvisioningPlan>
<ProvisioningTarget assignmentId="a12b12345664fd0acfe8bc850007f23" retain="true" role="Alumni">
<AccountSelection applicationId="0ee84309437962c701437966ba920004" applicationName="LDAP" selection="uid=testaccount,ou=people,dc=org,dc=ca">
<AccountInfo displayName="testaccount" nativeIdentity="uid=testaccount,ou=people,dc=org,dc=ca"/>
</AccountSelection>
<AccountSelection applicationId="8e6876c485361392848536a3c89b0025" applicationName="Affiliator" selection="V00123456">
<AccountInfo displayName="V00123456" nativeIdentity="V00123456"/>
</AccountSelection>
</ProvisioningTarget>
...
<ProvisioningTarget assignmentId="12345f0b6a904671822f4d20b75b1eda" retain="true" role="Adobe Employee Subscriber">
<AccountSelection applicationId="0ee1234567962c701437966ba920004" applicationName="LDAP" selection="uid=testaccount,ou=people,dc=org,dc=ca">
<AccountInfo displayName="testaccount" nativeIdentity="uid=testaccount,ou=people,dc=org,dc=ca"/>
</AccountSelection>
</ProvisioningTarget>
</ProvisioningPlan>
Here’s the update provisioning policy on the application:
<ProvisioningForms>
<Form name="Atlassian Cloud Manage Users Account Creation Policy" objectType="account" type="Create">
<Attributes>
<Map>
<entry key="pageTitle" value="Atlassian Cloud Manage Users Account Creation Policy"/>
</Map>
</Attributes>
<Section>
<Field displayName="UserName (org Email)" name="userName" type="string">
<Script>
<Source>
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
Logger log = LogManager.getLogger("ca.org.idam.AtlassianCloudManageUsersAccountCreationPolicy");
String value = identity.getAttribute("netlink");
String updatedValue = (value != null) ? value + ".dev" + "@org.ca" : value;
log.debug("Atlassian Cloud Manage Users account creation policy get userName (org Email): " + updatedValue);
return updatedValue;
</Source>
</Script>
</Field>
<Field displayName="Last Name" name="name.familyName" type="string">
<Script>
<Source>
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
Logger log = LogManager.getLogger("ca.org.idam.AtlassianCloudManageUsersAccountCreationPolicy");
String value = identity.getLastname();
log.debug("Atlassian Cloud Manage Users account creation policy get familyName: " + value);
return value;
</Source>
</Script>
</Field>
<Field displayName="First Name" name="name.givenName" type="string">
<Script>
<Source>
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
Logger log = LogManager.getLogger("ca.org.idam.AtlassianCloudManageUsersAccountCreationPolicy");
String value = identity.getStringAttribute("pref_first_name");
log.debug("Atlassian Cloud Manage Users account creation policy get givenName (preferredName): " + value);
return value;
</Source>
</Script>
</Field>
<Field displayName="Primary Email" name="emails.work.primary.value" type="string">
<Script>
<Source>
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
Logger log = LogManager.getLogger("ca.org.idam.AtlassianCloudManageUsersAccountCreationPolicy");
String value = identity.getAttribute("netlink");
String updatedValue = (value != null) ? value + ".dev" + "@org.ca" : value;
log.debug("Atlassian Cloud Manage Users account creation policy get primary email (org Email): " + updatedValue);
return updatedValue;
</Source>
</Script>
</Field>
<Field displayName="Active Status" name="active" type="boolean" value="true"/>
<Field displayName="Groups" multi="true" name="groups" type="list"/>
<Field name="schemas" type="string" value="urn:ietf:params:scim:schemas:core:2.0:User"/>
</Section>
</Form>
<Form name="Atlassian Cloud Manage Users Account Update Policy" objectType="account" type="Update">
<Attributes>
<Map>
<entry key="pageTitle" value="Atlassian Cloud Manage Users Account Update Policy"/>
</Map>
</Attributes>
<Section>
<Field displayName="UserName (org Email)" name="userName" type="string">
<Script>
<Source>
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
Logger log = LogManager.getLogger("ca.org.idam.AtlassianCloudManageUsersAccountUpdatePolicy");
String value = identity.getAttribute("username");
String updatedValue = (value != null) ? value + ".dev" + "@org.ca" : value;
log.debug("Atlassian Cloud Manage Users account update policy get userName (org Email): " + updatedValue);
return updatedValue;
</Source>
</Script>
</Field>
<Field displayName="Last Name" name="name.familyName" type="string">
<Script>
<Source>
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
Logger log = LogManager.getLogger("ca.org.idam.AtlassianCloudManageUsersAccountUpdatePolicy");
String value = identity.getLastname();
log.debug("Atlassian Cloud Manage Users account update policy get familyName: " + value);
//testing
log.debug("setting name.familyName to DoeTestFromProvisioningPolicy");
value = "DoeTestFromProvisioningPolicy";
return value;
</Source>
</Script>
</Field>
<Field displayName="First Name" name="name.givenName" type="string">
<Script>
<Source>
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
Logger log = LogManager.getLogger("ca.org.idam.AtlassianCloudManageUsersAccountUpdatePolicy");
String value = identity.getStringAttribute("pref_first_name");
log.debug("Atlassian Cloud Manage Users account update policy get givenName (preferredName): " + value);
return value;
</Source>
</Script>
</Field>
<Field displayName="Primary Email" name="emails.work.primary.value" type="string">
<Script>
<Source>
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
Logger log = LogManager.getLogger("ca.org.idam.AtlassianCloudManageUsersAccountUpdatePolicy");
String value = identity.getAttribute("username");
String updatedValue = (value != null) ? value + ".dev" + "@org.ca" : value;
log.debug("Atlassian Cloud Manage Users account Update policy get primary email (org Email): " + updatedValue);
return updatedValue;
</Source>
</Script>
</Field>
<Field displayName="Active Status" name="active" type="boolean" value="true"/>
<Field displayName="Groups" multi="true" name="groups" type="list"/>
<Field name="schemas" type="string" value="urn:ietf:params:scim:schemas:core:2.0:User"/>
</Section>
</Form>