Sunday, July 19, 2020

Sailpoint IdenityIQ Application Accounts status Custom Report

Custom Report to get account status of the Application , Basically this report can be used to give the details of all the accounts with the account status for Different Application in Sailpoint Identity IQ.


<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE TaskDefinition PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<TaskDefinition executor="sailpoint.reporting.LiveReportExecutor" name="VISHAL Application Account Status Report" progressMode="Percentage" resultAction="Rename" subType="Identity and User Reports" template="true" type="LiveReport">
  <Attributes>
    <Map>
      <entry key="report">
        <value>
          <LiveReport title="Data Validation Report">
            <DataSource objectType="sailpoint.object.Link" type="Filter">
              <QueryParameters>
                <Parameter argument="applications" property="application.id"/>
              </QueryParameters>
            </DataSource>
            <Columns>
              <ReportColumnConfig field="application" header="rept_account_by_attr_col_application" property="application.name" sortable="true" width="110"/>
              <ReportColumnConfig field="account" header="AccountName" property="id" sortable="true" width="110">
					<RenderScript>
					<Source>
					import sailpoint.object.*;
                    if(null != value){
                         Link link = context.getObjectById(Link.class,value);                   
                         String accName = link.getDisplayName();
                         String nativeName = link.getNativeIdentity();                   
                          if(accName != null){
                              return accName;
                          }
                          else{
                              return nativeName;
                          }
                      }
					</Source>
				</RenderScript>
			 </ReportColumnConfig>
			  <ReportColumnConfig field="Status" header="Status" property="id" sortable="true" width="110">
				<RenderScript>
				<Source>
                import sailpoint.object.*;
                   if(null != value){
                       Link link = context.getObjectById(Link.class,value);
                    if(link.isDisabled()){
                  return "Disabled";
                    }else{
                    return "Active";
                    }
                   }
				</Source>
			</RenderScript>
			</ReportColumnConfig>
            </Columns>
          </LiveReport>
        </value>
      </entry>
    </Map>
  </Attributes>
  <Description>Report for querying accounts native identity and status details.</Description>
  <RequiredRights>
    <Reference class="sailpoint.object.SPRight" name="FullAccessApplicationUserReport"/>
  </RequiredRights>
  <Signature>
    <Inputs>
      <Argument multi="true" name="applications" type="Application">
        <Description>rept_input_user_report_apps</Description>
        <Prompt>Select the applications to include in the report</Prompt>
      </Argument>
    </Inputs>
  </Signature>
</TaskDefinition>

Saturday, July 11, 2020

Sailpoint IdenityIQ Application Health Checkup Custom Report


Custom Report to test the Connectivity of the Application , Basically this report can be used to check the Health of the Different Application in Sailpoint Identity IQ

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE TaskDefinition PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<TaskDefinition executor="sailpoint.reporting.LiveReportExecutor" name="VISHAL Target Applications Connection Check" progressMode="Percentage" resultAction="Rename" subType="Configured Resource Reports" template="true" type="LiveReport">
  <Attributes>
    <Map>
      <entry key="TaskDefinition.runLengthAverage"/>
      <entry key="TaskDefinition.runLengthTotal"/>
      <entry key="TaskDefinition.runs"/>
      <entry key="report">
        <value>
          <LiveReport title="Applications Detail Report">
            <DataSource objectType="Application" type="Filter">
              <QueryParameters>
                <Parameter argument="applications" property="id"/>
                <Parameter argument="owners" property="owner.id"/>
              </QueryParameters>
            </DataSource>
            <ReportForm>
              <Reference class="sailpoint.object.Form" name="Applications Detail Report Form"/>
            </ReportForm>
            <Columns>
              <ReportColumnConfig field="application" header="rept_app_grid_col_app" property="name" sortable="true" width="110"/>
              <ReportColumnConfig field="connectionStatus" header="Target System Connection Status" property="id" sortable="true" width="110">
                <RenderScript>
                  <Source>
				  
import sailpoint.connector.Connector;  
import sailpoint.connector.ConnectorFactory; 
import sailpoint.connector.*; 
import sailpoint.object.Application;  
import sailpoint.object.TaskItemDefinition;  
import sailpoint.object.TaskItemDefinition.ProgressMode;  
import sailpoint.tools.GeneralException;  
import sailpoint.tools.Message;  
import sailpoint.tools.Util;  
import sailpoint.api.SailPointContext;
import sailpoint.object.*;
import java.lang.reflect.Constructor;
import java.util.*;

  
try {  

        Application app = (Application) context.getObjectById(Application.class, value);
        if (app != null) {   
                try {  
                    
                    Connector connector = ConnectorFactory.getConnector(app, null);
					connector.testConfiguration();
                    return "Test Connection Successful.";
                } catch (Exception e) { 
                    return e.getMessage();
                        log.error(e);  
                }  
        }  
} catch (Exception e) {  

        log.error(e);  
        throw(e);  
}  
                  </Source>
                </RenderScript>
              </ReportColumnConfig>
            </Columns>
          </LiveReport>
        </value>
      </entry>
    </Map>
  </Attributes>
  <Description>Displays configured applications Test Connection</Description>
  <RequiredRights>
    <Reference class="sailpoint.object.SPRight" name="FullAccessApplicationReport"/>
  </RequiredRights>
  <Signature>
    <Inputs>
      <Argument multi="true" name="applications" type="Application">
        <Description>rept_input_app_report_apps</Description>
      </Argument>
      <Argument filterString="capabilitiesString != &quot;null&quot;" multi="true" name="owners" type="Identity">
        <Description>rept_input_app_report_owners</Description>
      </Argument>
    </Inputs>
  </Signature>
</TaskDefinition>