When building Copper Power Platform, the requirement for an M7 integration that was clean, usable, and confidence-inspiring led to the creation of Copper M7.
Because of its reliance on
a fairly involved messaging protocol, and the requirement of being able to gracefully handle failover,
integrating with EPEX M7 is notoriously difficult.
Copper M7 hides all the messy details, making it possible for developers to focus on developing their own stuff. 🙂
Tapping into Microsoft's generic host model, starting your
robust M7-powered integration service is just as easy as calling an
extension method on your
Doing the initial sync is done simply by providing a callback. Copper M7 will call it during startup, and subsequently whenever it is required.
Broadcast messages get dispatched to the broadcast dispatcher function.
Copper M7 guarantees that you'll receive broacast messages in the correct order.
All message types are represented as C# classes. In addition to this, types are marked with interfaces, classifying
messages as one or more of
AND finally all requests are marked with their return types, e.g.
TradeCaptureReq is marked with
Copper M7 automatically retrieves and caches relevant entities, keeping them updated in the background.
They can be accessed via dedicated helpers, e.g.
IContractHelper, which may be used to easily
get contract information.
Handlers for initial sync and broadcast message processing can be registered with
services.AddBroadcastHandler<TradeCaptureRprtHandler>(); for full dependency injection support.