A developer plans plug-in steps on the Update message of the case table and wants to read the full row, including columns that were not part of the update, as it looks after the save has been applied. In which step registration can a post-image be configured and populated?
Select an answer to reveal the explanation.
Short Explanation
A post-image is a photo taken after the save, so you can only have it once the save has happened. That's PostOperation and nowhere earlier. The trap is thinking async mode changes the rules; it's the stage that matters, and async steps are PostOperation anyway.
Full Explanation
Entity images are snapshots of a row that Dataverse passes to a plug-in. A post-image represents the row after the core operation has been applied, so it can be registered and populated only on steps in the PostOperation stage, whether the step is synchronous or asynchronous. It is useful when a plug-in needs the final values of columns that were not part of the update request, without issuing an extra Retrieve. A PreOperation step runs before the core operation inside the transaction, when the post-operation state does not yet exist; it can have a pre-image but not a post-image. A PreValidation step runs before the transaction begins, earlier still, so a post-image is equally unavailable there. Asynchronous mode does not make post-images available in other stages, because asynchronous steps can only be registered in PostOperation in the first place; the stage is the deciding factor. Exam caveat: pre-images are not available on Create, because no previous row exists, while post-images are available on PostOperation Create steps. Operational check: in the Plug-in Registration Tool, register a Post Image on the PostOperation step with only the required columns, then confirm in the trace log that the code reads them from PostEntityImages by the registered name.