Hi Sean, Thanks for you quick response. Here are the session-level events we're using in ArcMap: Events.OnStartEditing. Here we compare Editor.EditWorkspace to the workspaces of interest to the external application. Subsequent processing only occurs when the user is editing data relevant to the external app. Events2.OnBeforeStopEditing. If the edit session is being saved (not discarded) and the workspace is of interest, the code compiles a list of inserted/updated/deleted features. The code gets the changes with WorkspaceEdit2.get_EditDataChanges(esriEditDataChangesType.esriEditDataChangesWithinSession), then calls ExtractEx on the result using the different esriDifferenceType values. Events2.OnStopEditing. If a change list was created in the prior step, here is where the code sends the list to the external app through that app's REST API. Besides the session-level events, our ArcMap extension also uses row-level events to validate feature attributes real-time and do some on-the-fly conflict resolution. Events.OnChangeFeature/OnCreateFeature/OnDeleteFeature. The extension monitors these events to enforce business rules on certain attributes. If a rule is violated, the user's change is undone, and the user is informed why. These are rules that can't be enforced by simple geodatabase constraints on the attributes. The code uses the row's IRowChanges interface to find out what's been edited and compare new and old values. Events.OnConflictsDetected. Conflict resolution is necessary because when the user saves an edit session, and OnStopEditing then sends a change list to the external app, this can trigger the external app to use the ArcGIS Server REST API to make its own changes to the feature class. If the external app changes a feature that's still part of the edit session, there are conflicts to resolve, and the OnConflictsDetected handler merges the external changes with the user changes in the current session. The code uses the IVersionEdit4 interface of the Editor.Editworkspace to get the pieces it needs. I can understand this is all probably above and beyond what a typical Pro add-in is expected to do. But without this level of capability in the Pro SDK, we'll just have to hold off on porting our extension to Pro. -Mark
... View more