For a new OpenLMIS implementation, I have added two extension points in the Fulfillment Service, one that is called after an Order is created and one that is called after a Shipment is created. They are two new Java interfaces: OrderCreatePostProcessor and ShipmentCreatePostProcessor. They have default behavior in the Core product, DefaultOrderCreatePostProcessor and DefaultShipmentCreatePostProcessor. The order extension point does nothing by default, and the shipment extension point creates a stock event by default, which is exactly the same behavior as before these extension points were created. Please take a look at the commits here and here, and respond if you have any questions or comments.
The next step is to make a patch release of the Service (without doing a full release of the Ref Distro) for use by the implementation. I will be following the documentation to do that.
I want to mention that the example extension repos Stock Management Validator Extension and Example Extensions were quite helpful in facilitating creating new extension points and extending the Service’s functionality without modifying the Service code directly. Kudos to those who made those examples possible!