Showing posts sorted by date for query report. Sort by relevance Show all posts
Showing posts sorted by date for query report. Sort by relevance Show all posts

Tuesday, July 20, 2021

Custom Report In Sailpoint IdentityIQ Using JavaDataSource

 Custom Report In Sailpoint IdentityIQ Using JavaDataSource , This Report Will give the Deleage Set for the User between the Dates (Start and End Date)

Form

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Form PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<Form hidden="true" name="VIS Custom Delegate Identity Report Form" type="Report">
  <Section columns="2" label="Request Parameters" name="customProperties">
    <Field columnSpan="1" displayName="Forward Start Date" helpKey="rept_id_risk_help_last_login_start" name="forwardStartDate" type="date" value="ref:forwardStartDate">
      <Attributes>
        <Map>
          <entry key="endDate" value="true"/>
        </Map>
      </Attributes>
    </Field>
    <Field columnSpan="1" displayName="Forward End Date" helpKey="rept_id_risk_help_last_login_end" name="forwardEndDate" type="date" value="ref:forwardEndDate">
      <Attributes>
        <Map>
          <entry key="endDate" value="true"/>
        </Map>
      </Attributes>
    </Field>
  </Section>
</Form>

 TaskDefinition 

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE TaskDefinition PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<TaskDefinition executor="sailpoint.reporting.LiveReportExecutor" name="VIS Custom Delegate Identity Report" progressMode="String" resultAction="Delete" subType="Identity and User Reports" template="true" type="LiveReport">
  <Attributes>
    <Map>
      <entry key="report">
        <value>
          <LiveReport disablePreview="true" title="Identity Forwarding Report">
            <DataSource dataSourceClass="com.vis.reports.ExperianCustomUserForwardingDataSource" type="Java"/>
            <ReportForm>
              <Reference class="sailpoint.object.Form" name="VIS Custom Delegate Identity Report Form"/>
            </ReportForm>
            <Columns>
              <ReportColumnConfig field="identity" header="rept_usr_forward_col_identity" sortable="true" width="110"/>
              <ReportColumnConfig field="displayName" header="rept_usr_forward_col_identity_display" sortable="true" width="110"/>
              <ReportColumnConfig field="identityFirstName" header="First Name" sortable="true" width="110"/>
              <ReportColumnConfig field="identityLastName" header="Last Name" sortable="true" width="110"/>
              <ReportColumnConfig field="identityEmpNumber" header="Employee Number" sortable="true" width="110"/>
              <ReportColumnConfig field="identityStatus" header="Employee Status" sortable="true" width="110"/>
              <ReportColumnConfig field="identityEmail" header="Email" sortable="true" width="110"/>
              <ReportColumnConfig field="forwardingUser" header="Delegate User" width="110"/>
              <ReportColumnConfig field="forwardingDisplayName" header="Delegate User Display Name" width="110"/>
              <ReportColumnConfig field="startDate" header="Delegate StartDate" width="110"/>
              <ReportColumnConfig field="endDate" header="Delegate EndDate" width="110"/>
              <ReportColumnConfig field="forwardingEmail" header="Delegate Email" property="name" width="110"/>
              <ReportColumnConfig field="forwardingEmpNumber" header="Delegate Employee Number" width="110"/>
              <ReportColumnConfig field="forwardingFirstName" header="Delegate First Name" width="110"/>
              <ReportColumnConfig field="forwardingLastName" header="Delegate Last Name" width="110"/>
            </Columns>
          </LiveReport>
        </value>
      </entry>
    </Map>
  </Attributes>
  <Description>A list of users who have forwarding configured and to which user.</Description>
  <RequiredRights>
    <Reference class="sailpoint.object.SPRight" name="FullAccessUserReport"/>
  </RequiredRights>
  <Signature>
    <Inputs>
      <Argument name="forwardStartDate" type="date">
        <Description>delegation start date</Description>
      </Argument>
      <Argument name="forwardEndDate" type="date">
        <Description>delegation end date</Description>
      </Argument>
    </Inputs>
  </Signature>
</TaskDefinition>

 Report JavaDataSource src code

package com.vis.reports;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
import sailpoint.api.SailPointContext;
import sailpoint.object.Attributes;
import sailpoint.object.Identity;
import sailpoint.object.LiveReport;
import sailpoint.object.QueryOptions;
import sailpoint.object.Sort;
import sailpoint.reporting.datasource.JavaDataSource;
import sailpoint.task.Monitor;
import sailpoint.tools.GeneralException;


public class CustomUserForwardingDataSource implements JavaDataSource{
	
	private Map<String, Object> currentRow;
	private QueryOptions baseQueryOptions;
	private SailPointContext context;
	private Map customQueryOptions = new HashMap();
	private Integer startRow;
	private Integer pageSize;
	private Iterator<Map<String, Object>> finalobjects;
	private Map<String, Object> object = new HashMap<String, Object>();	
	private Iterator<Entry<String, Object>> mapIterator;
	private List<Map<String, Object>> objectList = new ArrayList<Map<String, Object>>();
	
	Log logger = LogFactory.getLog("vis.task.CustomTask");
	
	@SuppressWarnings("unchecked")
	public void initialize(SailPointContext context, LiveReport report,Attributes<String, Object> arguments, String groupBy, List<Sort> sort) throws GeneralException {
		logger.info("entered initialize method of  CustomUserForwardingDataSource with :::arguments : "+arguments);
		this.context = context;
		baseQueryOptions = new QueryOptions();	
		try {			
			SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-YYYY");			
			if(arguments.containsKey("forwardStartDate")) { 
			    String startDate= formatter.format(arguments.get("forwardStartDate"));   
				customQueryOptions.put("forwardStartDate",startDate);	
				logger.info("forwardStartDate------convert" +startDate);
			}
			if(arguments.containsKey("forwardEndDate")) {
			    String endDate= formatter.format(arguments.get("forwardEndDate"));
				customQueryOptions.put("forwardEndDate",endDate);				
				logger.info("forwardEndDate------convert" +endDate);
			}			
			prepare();			
		} catch(Exception ex) {
			logger.info("Exception occured in initialize method CustomUserForwardingDataSource :::");
			ex.printStackTrace();
			logger.error(ex.getMessage());
		 }
	}
	
	private void prepare() throws GeneralException{
		
		logger.info("Enter in method prepare() of CustomUserForwardingDataSsource Class::::");
		Map<String, Object> itemMap = null;		
		String sql;
		String forwardStartDate = "";
		String forwardEndDate = "";		
		try {			
			if(null != customQueryOptions.get("forwardStartDate")) {
				
				forwardStartDate = (String) customQueryOptions.get("forwardStartDate");
			} 
			if(null != customQueryOptions.get("forwardEndDate")) {
				forwardEndDate = (String)customQueryOptions.get("forwardEndDate");
			}
	
			//SQL Query to fetch the delegated identity details with in date range.
	
        sql= "with A as(select name,display_name,EXTRACT(xmltype(preferences),'/Map/entry[@key=\"forward\"]/@value').getStringVal() as delegateduser,EXTRACT(xmltype(preferences),'/Map/entry[@key=\"forwardStartDate\"]/value/Date/text()').getStringVal() as forwardStartDate ,EXTRACT(xmltype(preferences),'/Map/entry[@key=\"forwardEndDate\"]/value/Date/text()').getStringVal() as forwardEndDate from spt_identity where preferences like ('%forward%'))"
		+ "select A.name as identity,A.display_name as displayName,A.delegateduser as forwardingUser, A.forwardStartDate as startDate,A.forwardEndDate as endDate from A "
		+ "where To_date('1970-01-01 00', 'yyyy-mm-dd hh24') + (A.forwardStartDate) / 1000 / 60 / 60 / 24 >=" 
		+ "'"+forwardStartDate+"'"+" and To_date('1970-01-01 00', 'yyyy-mm-dd hh24') + (A.forwardEndDate) / 1000 / 60 / 60 / 24<="
		+ "'"+forwardEndDate+"'";

		logger.info("Sqlquery build---------"+sql);
		System.out.println("Sqlquery build---------"+sql);
			
			Connection connection = context.getJdbcConnection();
	           Statement  stmt = connection.createStatement();
	           if (stmt == null){
	     			throw new Exception("Unable to create stmt");
	     		}
	           
	           ResultSet rs=stmt.executeQuery(sql);
	           if (rs == null){
	               throw new Exception("Result set is null");
	             }
	           ResultSetMetaData md = rs.getMetaData();
	           int columns = md.getColumnCount();	          
	           while (rs.next()){
	        	     itemMap = new HashMap<String, Object>();
				     for(int i=1; i<=columns; ++i){           
				    	 itemMap.put(md.getColumnName(i),rs.getObject(i));
				     }				     
				     mapIterator = itemMap.entrySet().iterator();				     
				     while(mapIterator.hasNext()) {
				    	 Entry<String, Object> entry = 	mapIterator.next();	 
				    	// logger.info("Item map entries::::"+entry.getKey() + ": " + entry.getValue());
				     }
				     
				     objectList.add(itemMap);				    
	           }
	           			           		
	           finalobjects = objectList.iterator();
	           
		}catch(Exception ex){
			System.out.println("Error occured in prepare() method of CustomUserForwardingDataSsource Class:::");
			ex.printStackTrace();
			logger.error(ex.getMessage());
		}
	}

	public Object getFieldValue(String fieldName) throws GeneralException {
		
		logger.info("Enter into getFieldValue() method of CustomUserForwardingDataSsource Class:::");;
		
     	Identity identity = this.context.getObjectByName(Identity.class, (String)this.object.get("IDENTITY"));		
		Identity delegateId = this.context.getObjectByName(Identity.class, (String)this.object.get("FORWARDINGUSER"));				
		SimpleDateFormat formatteddate = new SimpleDateFormat("MM/dd/yyyy");		
		if(fieldName.equals("identity")) {			
			return this.object.get("IDENTITY");
		}else if(fieldName.equals("displayName")) {			
			return this.object.get("DISPLAYNAME");			
		}else if(fieldName.equals("identityFirstName")) {
			return identity.getFirstname();
		}else if(fieldName.equals("identityLastName")) {
			return identity.getLastname();
		}else if(fieldName.equals("identityEmpNumber")) {
			return identity.getAttribute("employeeNumber");
		}else if(fieldName.equals("identityStatus")) {
			return identity.getAttribute("employeeStatus");
		}else if(fieldName.equals("identityEmail")) {
			return identity.getEmail();
		}else if(fieldName.equals("forwardingUser")) {
			return this.object.get("FORWARDINGUSER");
		}else if(fieldName.equals("startDate")) {					
			Date d = new Date();
			 if(this.object.get("STARTDATE") != null) {
				 long milliSeconds= Long.parseLong((String) this.object.get("STARTDATE"));
			    d.setTime(milliSeconds);
			    String startDate = formatteddate.format(d);
			    return startDate;
			 }
				 return "";
		}
		else if(fieldName.equals("endDate")) {			
			Date d = new Date();
			 if(this.object.get("ENDDATE") != null) {
				 long milliSeconds= Long.parseLong((String) this.object.get("ENDDATE"));
			    d.setTime(milliSeconds);
			    String endDate = formatteddate.format(d);
			    return endDate;
			 }
				 return "";
		}else if(fieldName.equals("forwardingEmail")) {
			return delegateId.getEmail();
		}
		else if(fieldName.equals("forwardingEmpNumber")) {
			return delegateId.getAttribute("employeeNumber");
		}else if(fieldName.equals("forwardingFirstName")) {
			return delegateId.getFirstname();
		}
		else if(fieldName.equals("forwardingLastName")) {
			return delegateId.getLastname();
		}else if(fieldName.equals("forwardingDisplayName")) {
			return delegateId.getDisplayName();
		}
		else {
			throw new GeneralException("Unknown column '" + fieldName + "'");
		} 	
	}
	
	public int getSizeEstimate() throws GeneralException {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void close() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void setMonitor(Monitor arg0) {
		// TODO Auto-generated method stub
		
	}

	public Object getFieldValue(JRField jrField) throws JRException {
		String fieldName = jrField.getName();
		try {			
			return getFieldValue(fieldName);
			
		} catch (GeneralException e) {
			throw new JRException(e);
		}
	}

	public boolean next() throws JRException {
		boolean hasMore = false;
		 
		if (this.finalobjects != null) {
			hasMore = this.finalobjects.hasNext();
			if (hasMore) {
				this.object = this.finalobjects.next();
			} else {
				this.object = null;
			}

		}
		return hasMore;
	}

	@Override
	public void setLimit(int startRow, int pageSize) {
		this.startRow = startRow;
		this.pageSize = pageSize;

	}

	@Override
	public String getBaseHql() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public QueryOptions getBaseQueryOptions() {
		return baseQueryOptions;
	}
}

Sunday, April 4, 2021

Sailpoint IdentityIQ User Application Entitlement Report

 User Application Entitlement Details Report

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE TaskDefinition PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<TaskDefinition executor="sailpoint.reporting.LiveReportExecutor" name="VIS Identity Entitlements Detail Report" progressMode="Percentage" resultAction="Rename" subType="Identity and User Reports" template="true" type="LiveReport">
  <Attributes>
    <Map>
      <entry key="report">
        <value>
          <LiveReport title="User Entitlements Report for Application">
            <DataSource objectType="IdentityEntitlement" type="Filter">
              <QueryParameters>
                <Parameter argument="application" property="application.id"/>
              </QueryParameters>
            </DataSource>
            <Columns>
              <ReportColumnConfig field="identity" header="identity" property="identity.displayName" sortable="true" width="110"/>
              <ReportColumnConfig field="name" header="name" property="identity.name" sortable="true" width="110"/>
              <ReportColumnConfig field="application" header="label_application" property="application.name" sortable="true" width="110"/>
              <ReportColumnConfig field="attribute" header="label_attribute" property="name" sortable="true" width="110"/>
              <ReportColumnConfig field="value" header="entitlement" property="value" sortable="true" width="110"/>
              <ReportColumnConfig field="accountId" header="account_name" property="nativeIdentity" sortable="true" width="110"/>
            </Columns>
          </LiveReport>
        </value>
      </entry>
    </Map>
  </Attributes>
  <Description>Displays identity/account entitlement information.</Description>
  <RequiredRights>
    <Reference class="sailpoint.object.SPRight" name="FullAccessIdentityEntitlementReport"/>
  </RequiredRights>
  <Signature>
    <Inputs>
      <Argument multi="true" name="application" type="Application">
        <Description>Applications  Entitlement deatils report for User</Description>
        <Prompt>applications</Prompt>
      </Argument>
    </Inputs>
  </Signature>
</TaskDefinition>

Wednesday, March 24, 2021

Sailpoint IIQ Service Now Integration - Sample Integration Config and Integration Rule

Below is the Customized Integration Config for Service Now Integration , Tested on orlando version

Service Now Integration Config

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE IntegrationConfig PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<IntegrationConfig executor="sailpoint.integration.servicenow.ServiceNowIntegrationExecutor" name="ServiceNow IntegrationConfig Vishal Demo Application" roleSyncStyle="none">
  <Attributes>
    <Map>
      <entry key="alias"/>
      <entry key="authType"/>
      <entry key="catalogItem">
        <value>
          <Map>
            <entry key="Vishal Demo Application" value="IdentityIQ Access Request"/>
          </Map>
        </value>
      </entry>
      <entry key="dateFormat" value="yyyy-MM-dd&apos;T&apos;HH:mm:ss"/>
      <entry key="visDefaultAssignmentQueue" value="IAM Requests Queue"/>
      <entry key="visServiceAcount" value="iiq.integration"/>
      <entry key="getRequestStatus">
        <value>
          <Map>
            <entry key="CONNECTION_TIMEOUT" value="30000"/>
            <entry key="SO_TIMEOUT" value="30000"/>
            <entry key="endpoint" value="https://sailpointdev.service-now.com/sc_req_item.do?SOAP"/>
            <entry key="prefix" value="sc"/>
            <entry key="responseElement" value="state"/>
			<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sc="http://www.service-now.com/sc_req_item">        
			<soapenv:Header></soapenv:Header>                        
			<soapenv:Body>                          
			<sc:getRecords>                            
			<number>$requestID</number>                          
			</sc:getRecords>                        
			</soapenv:Body>                      
			</soapenv:Envelope>                    
			"/>
			</Map>
        </value>
      </entry>
      <entry key="keyPass"/>
      <entry key="keystorePass"/>
      <entry key="keystorePath"/>
      <entry key="keystoreType"/>
      <entry key="noProvisioningRequests" value="false"/>
      <entry key="operations" value="Create,Modify,Delete,Enable,Unlock,SetPassword"/>
      <entry key="password" value="<password>"/>
	  <entry key="provision">
        <value>
          <Map>
            <entry key="CONNECTION_TIMEOUT" value="30000"/>
            <entry key="SOAPAction" value="https://sailpointdev.service-now.com/ScRequestGenerator/insert"/>
            <entry key="SO_TIMEOUT" value="30000"/>
            <entry key="endpoint" value="https://sailpointdev.service-now.com/ScRequestGenerator.do?SOAP"/>
            <entry key="groupItemBy" value="application"/>
            <entry key="multipleItem" value="true"/>
            <entry key="multipleTicket" value="true"/>
            <entry key="prefix" value="sc"/>
            <entry key="responseElement" value="scResult"/>
            <entry key="soapMessage" value="<?xml version="1.0" encoding="UTF-8"?>
			<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:scr="http://www.service-now.com/ScRequestGenerator">
			<soapenv:Header></soapenv:Header>
			<soapenv:Body>
			<scr:insert>
			<screquest>
			<opened_by>$!provisioningPlan.integrationData.openedBy</opened_by>
			<requested_for>$!provisioningPlan.integrationData.requestedFor</requested_for>
			<assignment_group>$!provisioningPlan.integrationData.assignmentGroup</assignment_group>
			<short_description>IIQ $!provisioningPlan.integrationData.identityRequestId</short_description>
			<req_description>This request item has been generated for an access request initiated in IIQ the requestor are in the Requested Item Description field.</req_description>
			<screqitems>
				#if ($config.multipleItem == &apos;true&apos;)
					#if (($config.groupItemBy) &amp;&amp; ($config.groupItemBy.toLowerCase() == &apos;application&apos;))               
						#set ($requestGroupByApp = {})
						#foreach ($request in $provisioningPlan.accountRequests)
							#if($requestGroupByApp.containsKey($request.application))
								$requestList = $!requestGroupByApp.get($request.application)
								$!requestList.add($request)
								$!requestGroupByApp.put($request.application, $requestList)
							#else
								#set ($requestList = [])
								$!requestList.add($request)
								$!requestGroupByApp.put($request.application, $requestList)
							#end
						#end
						#foreach ($mapEntry in $requestGroupByApp.entrySet())
						<item>
							<tracking_id>$!mapEntry.value.get(0).trackingId</tracking_id>
							<cat_item>$!catalogItem.get($!mapEntry.value.get(0).application)</cat_item>
							<description>
								#foreach ($request in $mapEntry.value)
									#if ($request.attributeRequests)
										#if($request.operation == &apos;Create&apos;)
											Lan ID: $provisioningPlan.integrationData.lanID
											Employee Number: $provisioningPlan.integrationData.empNumber
											Email Address: $provisioningPlan.integrationData.email
										#else
											Lan ID: $provisioningPlan.integrationData.lanID
											Employee Number: $provisioningPlan.integrationData.empNumber
											Email Address: $provisioningPlan.integrationData.email
										#end
									Application Name: $request.application
									#foreach ($att in $request.attributeRequests)
										Entitlement/Group/Role/Permission: $att.value
										#if($request.operation != &apos;Create&apos;)
											Account Id : $request.nativeIdentity
										#end
										Action needed: $att.operation access
									#end
									#elseif ($request.permissionRequests)
										For $request.nativeIdentity in application $request.application
										#foreach ($att in $request.permissionRequests)
											$att.operation Right $att.rights on $att.target
										#end
									#else
										$request.operation $request.application nativeIdentity $request.nativeIdentity
									#end
								#end
							</description>
						</item>
						#end
					#end
				#end
			</screqitems>
			</screquest>
			</scr:insert>
			</soapenv:Body>
			</soapenv:Envelope>
			"/>
          </Map>
        </value>
      </entry>
      <entry key="roleSyncHistory"/>
      <entry key="statusMap">
        <value>
          <Map>
            <entry key="-5" value="inProcess"/>
            <entry key="1" value="inProcess"/>
            <entry key="16" value="inProcess"/>
            <entry key="2" value="inProcess"/>
            <entry key="3" value="committed"/>
            <entry key="7" value="failure"/>
            <entry key="8" value="failure"/>
            <entry key="9" value="failure"/>
          </Map>
        </value>
      </entry>
      <entry key="username" value="iiq.integration"/>
    </Map>
  </Attributes>
  <PlanInitializer>
    <Reference class="sailpoint.object.Rule" name="VIS ServiceNow Service Integration Rule"/>
  </PlanInitializer>
  <ManagedResources>
    <ManagedResource>
      <ApplicationRef>
        <Reference class="sailpoint.object.Application" name="Vishal Demo Application"/>
      </ApplicationRef>
    </ManagedResource>
  </ManagedResources>
</IntegrationConfig>


Sample Integration Rule
 
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Rule PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<Rule language="beanshell" name="VIS ServiceNow Service Integration Rule" type="Integration">
  <Description>
 The rule is used to compute the requested for, opened by and assignmnent queue that needs to be 
 set on the ticket created by IIQ for delimited apps.The provisioning plan and its integrationData 
 object are used by Velocity to populate values in the XML templates for the web service calls.
  </Description>
  <Signature returnType="Object">
    <Inputs>
      <Argument name="identity">
        <Description>
    A sailpoint.object.Identity representing the person being remediated.
  </Description>
      </Argument>
      <Argument name="plan">
        <Description>
    A sailpoint.object.ProvisioningPlan representing remediation.
  </Description>
      </Argument>
      <Argument name="integration">
        <Description>
    A sailpoint.object.IntegrationConfig representing configuration object.
  </Description>
      </Argument>
      <Argument name="context">
        <Description>
    A sailpoint.api.SailPointContext object that can be used to query the database to find the Rule.
  </Description>
      </Argument>
      <Argument name="log">
        <Description>
    A Log object to help report and/or debug the Rule.
  </Description>
      </Argument>
    </Inputs>
  </Signature>
  <Source>
   <![CDATA[ 
   
	 import sailpoint.object.Identity;
	 import sailpoint.object.Filter;
	 import sailpoint.object.Configuration;
	 
	 String applicationName;
	 String openedBy;
	 String requestedFor;
	 String defaultUserOpenedBy = (String) integration.getAttribute("visServiceAcount");
	 List accountRequests = plan.getAccountRequests();
	 Map argument = (Map)plan.getArguments();
	 String planSource = plan.getSource();
	 
		requestedFor = identity.getName();
		openedBy = defaultUserOpenedBy;                         
		argument.put("requestedFor", requestedFor);      
		argument.put("openedBy", openedBy);
		argument.put("lanID", identity.getName());
		argument.put("email", identity.getEmail());
		argument.put("empNumber", identity.getAttribute("employeeNumber"));

	 if(accountRequests != null && accountRequests.size() > 0) {
		AccountRequest accountRequest = accountRequests.get(0);
		applicationName = accountRequest.getApplicationName();  
	 }
		   
	  String visDefaultAssignmentGroup = (String)integration.getAttribute("visDefaultAssignmentQueue");  
	  argument.put("assignmentGroup", visDefaultAssignmentGroup);
  ]]>  
  </Source>
</Rule>