I recently had to implement this change for a client that needed to track if a property on an extension table changed and apply a business rule based on the original and new value. My first response was yes, that can be easily done since SalesLogix has provided this functionality in the framework. It took a bit of digging around to get it working but I finally was able to implement it successfully. I have included 2 examples below for reference (the first one does not work). Code has only been tested in 7.5.1

//I used the code below...but change is always coming back null. Sage.Platform.ChangeManagement.IChangedState state = Account as Sage.Platform.ChangeManagement.IChangedState; Sage.Platform.ChangeManagement.EntityPropertyChange change = state.GetChangedState().FindMemberChange("ExtensionTableName"); if (change != null && change.OldEntity != null) { Sage.Entity.Interfaces.IExtensionTableName oldext = (Sage.Entity.Interfaces.IExtensionTableName)change.OldEntity.GetReferencedEntity(); Sage.Entity.Interfaces.IExtensionTableName newext = (Sage.Entity.Interfaces.IExtensionTableName)change.NewEntity.GetReferencedEntity(); if (oldext.PropertyName != newext.PropertyName) { //Process Data here } } //Code below works... Sage.Platform.ChangeManagement.IChangedState state = Account as Sage.Platform.ChangeManagement.IChangedState; if (state != null) { Sage.Platform.ChangeManagement.ChangeSet changedState = state.GetChangedState(); EntityChange changeext = changedState.FindMemberChange("ExtensionTableName"); if (changeext != null) { ChangeSet[] changeextmembers = changeext.GetChildChangeSets(); foreach (ChangeSet member in changeextmembers) { Sage.Platform.ChangeManagement.PropertyChange prop = member.FindPropertyChange("PropertyName"); if (prop != null) { //Process Data here } } } }
Posted in:

Start a Project With Us

Submit your email below to get in touch with our team.