Before Provisioning Rule for ServiceDesk Integration

Hi Anshuk! PFB the sample code. That may help you.

import sailpoint.object.Identity; 
import sailpoint.object.IntegrationConfig; 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import sailpoint.tools.GeneralException; 
import sailpoint.object.ProvisioningPlan.AccountRequest; 	
import sailpoint.object.*; 
import sailpoint.api.*; 
import sailpoint.object.ProvisioningPlan.AccountRequest; 
import sailpoint.object.ProvisioningPlan.AccountRequest.Operation; 
import sailpoint.object.ProvisioningPlan.AttributeRequest; 
import sailpoint.object.ProvisioningPlan; 
import sailpoint.object.Attributes; 
import sailpoint.object.ProvisioningPlan.Operation; 

Log log = LogFactory.getLog(\"openconnector.connector.servicedesk.ServiceDeskConnector\"); 
if (plan == void || plan == null) {
 log.error(\"Before Provisioning Rule SDIM - Plan is null.\"); 
 throw new GeneralException(\"Before Provisioning Rule SDIM - Plan is null.\"); 
} 
List requesterList = plan.getRequesters(); 
Identity requester = null; 
if (requesterList != null && requesterList.size() > 0) {
 requester = requesterList.get(0); 
} 
String appName = integration.getName(); 
String requesterSource = null; 
String identityFirstname = null; 
String identityLastname = null; 
String identityLoginId = null; 
String sourceAppName = null; 
String accountRequest= null; 
String sourceDisplayName = null; 
if (appName != null) { 
 requesterSource = (String)idn.getSourceAttributeBySourceName(appName, \"requesterSource\");
} 
// Get Account's native Identity (aka unique accountId) 
String openedBy = null; 
String requestedFor = null; 
if (requesterSource != null) {
 if (requester != null) {
  openedBy = idn.getFirstAccountNativeIdentity(requesterSource, requester.getName());
 } 
  if (identity != null) {
   requestedFor = idn.getFirstAccountNativeIdentity(requesterSource, identity.getName());
  }
} 
else {
 log.warn(\"Attribute 'requesterSource' is null in the application: \" + appName);
} 	
Attributes attrs = new Attributes();
String upn = ""; 	
String saMAccountName = ""; 
if (identity != null) {
 identityFirstname = identity.getFirstname(); 
 identityLastname = identity.getLastname(); 
 if(requesterSource != null && requestedFor != null) {
  identityLoginId = idn.getAccountAttribute(requesterSource,requestedFor, \"LoginName\");
 } 		
attrs.put("firstName", identityFirstname); 		
attrs.put("lastName", identityLastname); 		
attrs.put("email", plan.getIdentity().getEmail()); 		
attrs.put("department", plan.getIdentity().getAttribute("department")); 		
attrs.put("title", plan.getIdentity().getAttribute("title")); 		
attrs.put("manager", plan.getIdentity().getManager().getName()); 
} 
if (identityFirstname != null) { 
 plan.put(\"identityFirstname\", identityFirstname); 
} 
if (identityLastname != null) {
 plan.put(\"identityLastname\", identityLastname); 
} 
if (identityLoginId != null) {
 plan.put(\"loginId\", identityLoginId);
} 
if (requestedFor != null) { 
 plan.put(\"requested_for\", requestedFor); 
} 
if (openedBy != null) { 
 plan.put(\"opened_by\", openedBy); 
} 
if (identity.getName() != null) { 
 plan.put(\"identityName\", identity.getName()); 
} 	
List links=    identity.getLinks();
Iterator iterator = links.iterator();
while(iterator.hasNext()) {
	Link link = (Link)iterator.next();
	String applicationName = link.getApplicationName();
	Application source = link.getApplication();
	if(applicationName.toLowerCase().contains("Active Directory")) {
			upn = idn.getAccountAttribute(applicationName, link.getNativeIdentity(), "userPrincipalName");
			saMAccountName = idn.getAccountAttribute(applicationName, link.getNativeIdentity(), "sAMAccountName"); //
	break;
	}
}
attrs.put("upn", upn); 	
attrs.put("saMAccountName", saMAccountName); 
List accounts = plan.getAccountRequests(); 
if(accounts != null && accounts.size() > 0) { 
 for(AccountRequest accountRequest : accounts) { 
  sourceAppName = accountRequest.getApplicationName(); 
  sourceDisplayName = (String) idn.getSourceAttributeBySourceName(sourceAppName, \"cloudDisplayName\"); 
  accountRequest.put(\"sourceDisplayName\", sourceDisplayName); 			
  String ump=""; 			
	if(accountRequest.getApplication().getName().contains("UMP")){
	AttributeRequest attribReq = accountRequest.getAttributeRequest("groups");
	if(attribReq!=null) {
			String attributeName = attribReq.getName();
			String attributeValue = attribReq.getValue();
			String appID = accountRequest.getApplication().getId();
			ManagedAttributeDetails entDetails = idn.getManagedAttributeDetails(appID, attributeName, attributeValue, Type.group);
			ump = entDetails.getAttributes().get("provisioningAuthority");
		}
	}
	attrs.put("ump", ump);			 
} 
} 	
 plan.setArguments(attrs);
1 Like