Hi Shih, Michael,
Actually, there is no native feature or log that provides a "stopwatch" per object.
The Entra ID Connect sync engine (based on MIM/FIM) processes objects in multi-threaded batches (pipelines), not serially. Therefore, it doesn't calculate a "duration" for UserA vs UserB. It loads a batch of 50 or 100 objects into memory, applies synchronization rules to the batch, and commits the batch to the SQL database or the target connector.
Since you can't get a per-object timestamp, you must determine if your slowdown is due to Data Volume (processing too many changes) or Processing Latency (system/rule bottlenecks).
1. Isolate the Bottleneck Phase
In miisclient.exe, click the Operations tab and look at the recent "Full Synchronization" profile history. A sync run has multiple steps; knowing which one was slow tells you where to look:
Import (from AD) was slow: The issue is reading from your on-prem Domain Controller (network latency or unindexed AD queries).
Synchronization was slow: This is the most common cause for "double duration." It implies SQL performance issues (fragmentation) or a new/inefficient Synchronization Rule (e.g., a rule with complex RegEx or joining logic).
Export (to Entra ID) was slow: This indicates Azure throttling or internet bandwidth issues.
2. Check for "Attribute Churn" (The "List" you asked for)
If the Synchronization step was slow, it’s possible a massive number of objects were flagged for update due to a single attribute change (e.g., an HR system updated extensionAttribute1 for 50,000 users).
To see the list of objects that actually changed (rather than just being evaluated):
In miisclient.exe > Operations, click the slow run profile.
In the bottom left "Step" pane, select the Synchronization step.
In the bottom right, look at the "Outbound Synchronization Statistics".
Click the number next to "Updates" or "Adds".
This opens a window listing every specific object that had a pending change calculated.
Note: You cannot see "time taken," but if you see 10,000 objects here when you usually see 50, you have found your root cause. Double-click any object to see exactly which attribute triggered the update.
3. Analyze SQL Performance (The likely technical culprit)
If the number of updates in Step 2 is low/normal, but the time is double, your LocalDB (or SQL) is struggling.
Fragmentation: Even in v2.5, the ADSync database can get fragmented after massive deletions or full syncs.
Ensure the server has enough RAM (SQL caches the DB in RAM). If you are using the default LocalDB (SQL Express) and your database is approaching 10GB, performance falls off a cliff.
I hope you've found something useful here. If it helps you get more insight into the issue, it's appreciated to ACCEPT ANSWER. Should you have more questions, feel free to leave a message. Have a nice day!
VP