Skip to main content

History tracking data is important for  trend analysis/ forecasting. But, there could be some objects where we are required to maintain just the snapshot data. For example in standard objects like Company/ User or any custom objects – In Company, when did the CSM change or what was the previous ARR?

As of today, we do not have the luxury of keeping historic changes in Gainsight but with the help of rules/ objects we can still accomplish this.

 

For demonstration – I’ve created the object ‘Kite Info’, which is loaded around 7am daily.

Schema as follows,

{*Kite Id(String); Kite Name(String); Kite Date (Date); Kite Value (Number); Kite Location (String) }

*Kite Id is the identifier field.

I’ve created a backup object that has only those fields which require history tracking(along with the Identifier) – ‘Kite Info Bkp’. This object is loaded 10am daily.

But, for the first time – data from ‘Kite Info’ is loaded once ‘Kite Info Bkp’ is created.

{*Kite Id(String); Kite Date (Date) ; Kite Value (Number);  Kite Location (String) }

*Kite Name is consistent hence not required for tracking.

 

Rule Name -> ‘Load Kite Info Backup’, scheduled to run at 10am

Load all the values from ‘Kite Info’ to ‘Kite Info Bkp’ with Upsert operation and Identifier ‘Kite Id’

 

History Tracking object – ‘Kite Info History

 

Column Name

DataType

Kite Id

String

Kite Date New

Date

Kite Date Old

Date

Kite Value New

Number

Kite Value Old

Number

Kite Location New

String

Kite Location Old

String

Kite Date Changed

Boolean

Kite Value Changed

Boolean

Kite Location Changed

Boolean

Changed Date

Date

 

History Tracking Rule Setup,

Rule Name à ‘Kite History Tracking’ ; Scheduled to run at 9am daily.

“Timing of this rule is of highest importance – this should be scheduled to run after the source ‘Kite Info’ is reloaded but before the backup object ‘Kite Info Backup’ is refreshed.

In the Merge task, I’m doing inner join on Kite Id.

 

Fields in the Transformation task ‘Change Capture’ are as follows,

  • Those with prefix ‘new’ are from ‘Kite Info’
  • Those with prefix ‘old’ are from ‘Kite Info Bkp’

Field List – Kite Id, Kite Date Old, Kite Date New, Kite Date Changed and similarly for Kite Value and Kite Location

Case statement,

When ‘Kite Value New’ not equals ‘Kite Value Old’ then ‘Kite Value Changed’ is True

Similarly for Kite Date and Kite Location.

I’m introducing another case field as,

When

‘Kite Value New’ not equals ‘Kite Value Old’ (OR)

‘Kite Date New’ not equals ‘Kite Date Old’ (OR)

‘Kite Location New’ not equals ‘Kite Location Old’

Then ‘Changes Made’ is True

Only if the above value true, a record will be considered for inserting into History tracking object.

 

Loading into History Tracking object is of INSERT type action, as we have to capture all the changes being done.

Adding my +1 to this; there are certain fields I’m tracking history for now using real-time rules, however 1) this is time consuming and really not a scalable approach, 2) only works with a low-volume object and 3) change tracking should really be considered as a standard for an enterprise solution allowing admins to review changes within their instance (this challenge isn’t just limited to MDA changes but across all aspects of the application).

 

From an admin perspective, it’s disappointing to see functionality for change tracking deprioritized versus other functionality.


Adding my +1 to this as well. It’s concerning that something with this much engagement and has such a clear value has gotten pushed off the roadmap so often.

 

A particular use case for a standard object is tracking CTA changes, especially on custom fields, and Company-level attributes as well. Having to potentially create a snapshot object from scratch and then maintaining it via rules is frivolous admin overhead, adds rules overhead and schedule issues, and clutters up the instance.


I realize this is a very old thread but this is the only thread I could find for exactly what I am looking for.  Is there now a way to track CSM changes to an account now and I just haven’t figured it out?  As with everyone above, there is a need to know when a CSM changed and which CSM previously had the account. 

Thank you in advance and apologies if this is already available in NXT and I’m not seeing it


@ahollen You can do several things: 

  1. Create a auto milestone on CSM change, which will record when there has been a CSM change but won’t structure the data “from” / “to.
  2. Create a real-time rule that detects previous and current CSM and writes that in a custom object
  3. Create a snapshot rule that runs daily and snapshots all values (or whichever values you want) including the CSM value so you can store previous and current value

1 and 2 OR 1 and 3 should be combined imho. 

Hope this high level helps!

Thanks

A


Ya’ll got anymore of that roadmap? 

4 years ago it was on the roadmap and now… ​@pgeorge ​@revathimenon …?


Any updates on this one? Not having CSM history by default seems like an obvious miss, especially when creating this requires admin work and can fail


Any updates on this one? Not having CSM history by default seems like an obvious miss, especially when creating this requires admin work and can fail

This isn’t quite the same, but the last release did roll some CSM tracking fields out, OOB: https://support.gainsight.com/gainsight_nxt/Release_Notes/Current_Release_Notes_-_2025/Gainsight_CS_Release_Notes_April_2025#Out-of-the-Box_Precalculated_Fields_Now_Available_Across_Key_Data_Models

I haven’t used it yet, but at least based on the article it seems you would get the last CSM and the date it changed. So, wouldn’t be a full history but it would be something.


We have recently granted the CSM the capability to modify the roles of individuals, and we would like to implement a method to track who made these changes. Implementing this feature would be a great help to suffice the requirement.