My company is currently implementing the TMForum's rest base open API's. We use the subscription agreement or contract model similar to Shopify (see this link
for details). It is basically an agreement between us and our customer over a period of time for a set of recurring purchases. Initially, mapping the subscription contract model to TMF's "agreement" made sense. Now I'm struggling a bit to map this usecase;
When a customer wishes to cancel subscription contract they need to put in a request. This is a manual process in which the request is sent to a special team for review before it is accepted or rejected. If it's accepted, then usually the customer is allowed to finish out the time remaining on the subscription contract before it is finally de-activated.
The best mapping that I've come up with is the use of the TMF 622 - Product Ordering Management;
POST /productOrder - with a "productOrder_create" request that contains a productOrderItem that looks something like
The issues I'm facing are these;
- There is a 'ProductOrder' entity but not a more generic 'Order' entity. The GB922_Customer_v21.5.pdf doc mentions that some enterprises consider an Order to be a type of Agreement with the Order formalizing the Agreement. So where is the 'Order' resource that I can use?
- There is a generic 'OrderItem' which would be great for my purposes but there is no indication as to whether or not it's a supertype of 'ProductOrderItem' or where it's used.
- The documentation around the 'id' of the 'OrderItem' implies a line item, and not a way to identify the actual entity I which to work on. In the case of other CRUD actions ("modify", "no-change", "delete"), would I be able to use the uuid of the entity instead of a generic sequential id?
- In the example above I'm using the "productOrderItemRelationship" to circle back to itself, but is there another way to indicate the type of 'Order' I'm working on?
Any help is appreciated.