Announcing the Saviynt Knowledge Exchange unifying the Saviynt forums, documentation, training,
and more in a single search tool across platforms. Read the announcement here.
No ratings
Saviynt Employee
Saviynt Employee

Short Description : 

Reporting is an essential and important function in a IGA implementation. Reporting helps to evaluate an IGA implementation on many points like governance, efficiency, effectiveness, usability, performance etc To make sure that IGA implementation reports are effective and provide correct data , they should be developed with a proper approach.

Note - it is expected that the implementor has good knowledge in SQL to write optimized queries. A bad SQL query can significantly impact performance and moreover can impact the overall application stability.

Applicable version : ALL

Detail best practice

  1. Get the fine grained requirements on the reports that are to be developed with the audience of the reports. Make sure that each report should have below details captured when gathering its requirements:
    • Data Needed in the report: Each report should return only the necessary data to the audience as per their needs.
    • Duration of Data in report: The data presented in the report should be for a specific timeline. A report having data from start of the IGA implementation till the current date will not necessarily be of use. Have a set duration defined in the reports in either hours, days, weeks or months etc.
    • Frequency of report data:  Work with audience on the frequency with which they need the data to be provided in the report. Retrieving the report data daily incases where the audience needs the data at a weekly frequency will cause unnecessary load on the IGA system and will also create unnecessary confusion to the audience.
    • Keeping history and duration: Check with the report audience as to how many previous report runs of data they need stored. 
    • Report Accessibility: Get details on how the audience wants to access the reports data.  They may want to access the report data through the portal for  or they may want the report to be sent to them over email and you will be able to set the appropriate setting when creating the report depending on their requirement. 

  2. Consider below best practices when developing the SQL Query in the report:
    • Use only required fields in the select clause with proper aliasing. The aliasing should be done to provide an audience friendly name to data field of the report. For example User ID, Username, Network ID, Login ID and Login Name can point to same data field but have different names as per the respective teams / organizations.
    • Make sure that the report data should be filtered as per the audience's need by using the 'where' clause.
    • Join data from different tables using inner join and inner joins should also be preferred instead of sub query.
    • Use the primary key , unique key and indexed data columns in the joins and where clause for filtering the report data.
    • Do not use order by on sub queries and ordering a sub query output which is used for filtering data is an unnecessary overhead on system resources.
    • Avoid usage of NOT clauses like NOT LIKE, NOT EXISTS,NOT IN etc.
    • Prefer using where clause instead of using the 'Having' clause.
    • Avoid using distinct in select clause.
    • Avoid wild card usage with the 'like' clause. And also if it is required then start with adding wild cards at the end only, then at the start only and then try adding them at  both the start and the end.
    • Make sure to use limit clause while developing and testing the sql query either in analytics or in data analyzer.
    • Instead of creating one analytics which returns a large amount of data to satisfy multiple requirements, create multiple analytics returning only the data needed per specific requirement.

  3. Please use the below guidelines when setting the analytics configs for efficient management of reports data:
    • Number of history to keep: Make sure to have smallest value possible from 1 to 10 for this field as per business need. Do not set the same value for all the reports as the need may differ as per the audience.
    • Archival as ON: Set the Enable Archival field as ON. This will archive the report data that is being deleted as per the 'History to keep' configuration. This archived data can be accessed through UI later but for a definite time interval like 90 days.
    • Leverage the use of base count along with 'History to keep' configuration to store only the differential report data in ES server. Please ensure that the 'history to keep' configuration is more than base count value.
    • Provide a 'Category'  and 'Sub Category' as per business terminology and this grouping of reports will be helpful when searching for the reports or running them through the 'Run All Analytics' Job.
    • Do not use a field or an alias ending with keyword 'date'. For example, instead of using column name as 'TerminationDate' use the alias 'Date of Termination'.
    • Leverage 'Runtime Analytics' as an option when the report data is needed only at a point in time and so that the data doesnot need to be unnecessarily stored in ES.
    • Provide Allowed Actions as per business requirement and should not be same for all reports.
    • Please set the 'Owner' field of the analytics report. 
    • Make sure you are developing sql queries with in Saviynt analytics guardrails benchmark values. Refer for guardrail values.
  4. Leverage the use of Saviynt REST APIs to access the reports data for further processing or decision making.
  5. If business needs to store the reports for a longer duration like more that 90 days then they should store the report in their network instead of Saviynt servers.

Key Benefit (Quantitative/qualitative)

  1. Better and efficient reports help to provide the actual required data from the IGA System.
  2. Efficient reports help in effective data processing and decision making down the line.
  3. Efficiently designed analytics will not cause over usage of system reports which may impact execution of other Saviynt modules.

Reference documentation (doc portal link)



@nimitdave thanks for the insights.

Regarding the values and config on Guardrails. Is there a way where this value can be modified? If yes, what is the recommended approach?

Saviynt Employee
Saviynt Employee

@Manu269 , the guard rail configs are configured as per the system config for each environments. If you want them to be changed then a support ticket can be raised with details and then saviynt support will take action post consulting with the engineering team.

Regular Contributor
Regular Contributor

Hi @nimitdave 

I am facing problems when using Base Count in Analytics.

Can you please help Re: Base Count not working as expected in Analytic... - Saviynt Forums - 68357



Version history
Last update:
‎06/30/2023 08:57 AM
Updated by: