Onboard application using Web Service Connector - status field issue

I was onboarding the Okta application using the web services connector. After running the aggregation, all user statuses only show as “Enabled.” However, most of the user statuses should be STAGED, PROVISIONED, ACTIVE, or SUSPENDED. According to the SailPoint documentation, I placed all these values inside Connection Settings > Account Enable Status Attribute. But after running the aggregation, all user statuses changed from “Enabled” to “Disabled.”

How can I fix this issue so that the correct status values (STAGED, PROVISIONED, ACTIVE, SUSPENDED) are properly populated in the user status field?

Hey @sachink4 The Account Enable Status Attribute can hold multiple values. Are you adding multiple statuses by comma separation? Like status = STAGED, PROVISIONED, ACTIVE,SUSPENDED

If you already tried the above, can you empty this field and try to do the account aggregation? I have a web service source where I have many statuses like pending, started, enabled, and deactivated. So I haven’t added the Account Enable Status field, but aggregation is pulling all the accounts for me.

I already completed this process without adding any additional fields, but all user accounts still appear as “Enabled.” However, in the target application, some user accounts are actually in a “Suspended” state. any other way to fix this issue?

Hi @sachink4 ,

If you configured as mentioned by @Santhakumar still it is not working then I recommend you to go ahead with Web Services After Operation Rule to configure enable/disable account for this scenario.
Please refer below snippet as a example

String status = (String) map.get(“status”);

if (“ACTIVE”.equalsIgnoreCase(status) ||
“PROVISIONED”.equalsIgnoreCase(status) ||
“STAGED”.equalsIgnoreCase(status)) {

map.put(“IIQDisabled”, false);
} else {
map.put(“IIQDisabled”, true);
}

@sachink4 , use web service after operation rule and follow below steps to achieve:

  1. Iterate processedResponseObject and get user’s status attribute value.
  2. Check condition like if status equals ignore case STAGED, PROVISIONED, ACTIVE, Set IIQDisable → false, other wise true.
import sailpoint.tools.GeneralException;
import java.util.Map;
import java.util.HashMap;
import sailpoint.connector.ConnectorException;

try {
for (int i = 0; i < processedResponseObject.size(); i++) {

    Map userMap = new HashMap();
    userMap.putAll((Map) processedResponseObject.get(i));
	String status = (String) userMap.get("status").toUpperCase();
	if (status != null && !status.isEmpty()) {
		if("STAGED".equalsIgnoreCase(status) || "PROVISIONED".equalsIgnoreCase(status) || "ACTIVE".equalsIgnoreCase(status)){
			userMap.put("IIQDisabled", false);
		}
		else if("SUSPENDED".equalsIgnoreCase(status))
		{
            userMap.put("IIQDisabled", false);
		}
    }
    processedResponseObject.set(i, userMap);
}

}
catch (Exception e) {
log.error("Error processing manager flag", e);
}

@suraj_gorle @Bapu-Gogu Sure, I will check.

Thanks for your prompt reply.

Hi @sachink4,

I encountered a similar issue, which was resolved using an after operation rule. You can achieve your use case using the same approach.