Storage Commitment is a DICOM service which allows a creator of images or other Composite_Instances to check that they have been stored safely by a server (the SCP) before deleting from its own cache. The images are stored as normal using C-STORE (i.e. Storage Commitment is not used ot transfer the images themselves), but then the SCU sends a storage commitment request in the form of an N-ACTION asking the SCP to report back once the the listed images are safe, which it does asynchronously using N-EVENT-REPORT.
The following picture shows the basic work flow of Storage Commitment:
The difficulty with implementation of this protocol in practice relate to the use of N-EVENT-REPORT, and choice of which Association to send it over. It is of course possible, if the images are already safely stored, for the SCP to respond immediately over the same association as used by the SCU for the request, but there is then potentially a "race condition" as the SCP may or may not be able to send the N-EVENT-REPORT before the SCU chooses to close the association. Of course, if the notification is only sent several hours or even days later (a common position) then the use of the same association if not feasible, so the SCP must either wait for a new association to happen to arrive from that SCU or to make its own, and in fact best practice (as defined by IHE) is always to use a new association for that reason, but that raises a problem, as N-EVENT-REPORT messages may only be sent from SCP to SCU, and normally the initiator of the association becomes the SCU!
The solution is to use Reverse_Role_Negotiation whereby the initiator asks to become the SCP (always accepted for storage commitment, though never used for other services), allowing the N-EVENT-REPORT to be sent using an association under the control of the SCP. Of course, this does place a requirement on modalities etc. that they must listen for incoming associations.
This service is not only used by modalities, but can be used by other equipment, e.g. that creating Presentation_States, Key_Image_Notes, Structured_Reports or any other Composite_Instances such as Secondary_Capture Images.