Open APIs

 View Only
  • 1.  TMF640 Service termination

    Posted Jun 27, 2019 02:14
    Hi guys

    We recently are building some service activation functionalities based on the TMF640 documentation.
    By looking at the document, I find in the life cycle, 
    The service could go to terminated from Active.
    From software development point of view, when we design the API for the use case, 
    I think the DELETE method should be used for the Restful API, it should do a soft delete to mark the service to Terminated.
    There are some different opinion saying the PATCH should be used as in the life cycle diagram, it mentioned "terminate modify(state = Terminated)".
    lifecycle

    If you search it on google, most of the article would suggest the DELETE API would be used for soft deletion.
    So my question is what API method should we use here for service termination, what is the reason if it should use PATCH?

    ------------------------------
    Jeremy Yang
    ------------------------------


  • 2.  RE: TMF640 Service termination

    TM Forum Member
    Posted Jun 27, 2019 12:11
    Hi Jeremy
    I think it would very inadvisable to terminate (or disconnect, or whatever) a Product or a Service by a REST DELETE operation. The purpose of DELETE is to remove the REST resource (logically or physically) from persistent storage. You would expect that after a DELETE, an attempt to GET the resource would give you a 400 Not Found (or similar).

    But a disconnected product or service should still be present in storage, and even visible e.g. to service reps.

    Consider the following use case to justify this:
    • Customer requested termination of his mobile line 212-777-1234
    • Four weeks later, the customer realizes that she wants service back
    • Under the regulatory terms, customer is entitled to receive their original number for a period of up to 90 days
    • So customer's mobile line is re-established.
    Hope it helps

    ------------------------------
    Jonathan Goldberg
    Amdocs Management Limited
    ------------------------------



  • 3.  RE: TMF640 Service termination

    Posted Jun 28, 2019 11:29
    Thanks Jonathan for your reply.

    What if the service we defined is a connection between A to B. Is the Restful delete suitable for connection deletion?
    In our case, we have to cut off the existing connection and rebuild the connection with customer's new input. If that is the case shouldn't we delete the old connection and reactivate a new connection with a new uuid?

    Regards
    Jeremy Yang

    ------------------------------
    Jeremy Yang
    Telstra Corporation
    ------------------------------



  • 4.  RE: TMF640 Service termination

    TM Forum Member
    Posted Jun 28, 2019 11:29
    Yeah, it is better to use PATCH to change the state to "Terminated". DELETE can be used to remove the service instance (API resource object here) from the Active Inventory.

    ------------------------------
    Varun Nair
    Telstra Corporation
    ------------------------------



  • 5.  RE: TMF640 Service termination

    Posted Jul 01, 2019 16:11
    Thanks Varun for your reply.

    I had similiar approach in my mind as well. Also I had some questions regarding TMF640 and TMF638. By reading the TMF document, 640 and 638 are quite similiar from API's perspective. How should they be used for different use cases?
    For example, when the customer wants to activate a service, it should call TMF640 API to activate the service, I assume it should create a 640 instance, meanwhile should we also internally call 638 to create a 638 instance(should we call this service instance? as it is the service inventory)?
    If this is correct, we are kind of managing two instances for same purpose.
    What's your understanding of it?

    In addition, coming back to my original question, given above instances are created, if customer wants to terminate the service, you recommend to call 640 PATCH to update 640 instance to "Terminated" status and DELETE 638 service instance in inventory. Is that what you mean?

    Regards
    Jeremy Yang

    ------------------------------
    Jeremy Yang
    Telstra Corporation
    ------------------------------



  • 6.  RE: TMF640 Service termination

    TM Forum Member
    Posted Jun 28, 2019 11:29
    Hi Jeremy,

    I believe you are correct to use a DELETE for the TMF640 API. TMF640 (Service Activation & Configuration) is intended to be interfacing to some NMS platform to create and terminate the service. Some NMS can be license restricted on the number of services. You typically do not want to pay license after the customer is gone.

    Jonathan is describing a use case for TMF638 (Service Inventory) where indeed you want to keep track of historical information regarding services. Many countries even have laws to define the retention time for this type of information in the inventory. We should however not mix up both API's which serve a very different purpose.


    Regards






  • 7.  RE: TMF640 Service termination

    TM Forum Member
    Posted Jun 30, 2019 16:13
    Thanks Koen for your clarification.

    I don't claim to be an expert in network provisioning, so feel free to shoot me down (metaphorically of course). But I would say that even in the network there is a difference between disconnecting/canceling the service and actually removing it from the platform. For example there might be a need to preserve resources with state (such as voice mail box with users messages), in order to meet the regulatory requirements. So the logic might be:
    • PATCH state to disconnected
    • Wait statutory period
    • If customer didn't exercise right to re-establish, DELETE from network
    This would be true then also for TMF640.

    Of course it depends on the business and regulatory requirements.

    Hope it helps.

    ------------------------------
    Jonathan Goldberg
    Amdocs Management Limited
    ------------------------------



  • 8.  RE: TMF640 Service termination

    Posted Jul 02, 2019 13:29
    Edited by Stephan Pelletier Jul 02, 2019 13:54
    Hi everyone!

    I agree with Koen.

    Specifically, using TMF638, a modify/patch of a service, in the service inventory, to the state of "Terminated" keeps the object in the inventory for as long as someone wishes (could be years). This action should, however, de-allocate all resources that were assigned to this service, so they become available resources for other service instances.

    Another event which should arise from the service inventory state transition to "Terminated" is the trigger of TMF640 (Service Activation & Configuration)  "DELETE" operation(s).  Generally speaking, you want to completely remove everything that was previously activated for this service.

    Obviously, this logic works well when the serving application of TMF640 is an Activation system (equivalently whether they are stateful or stateless).

    It is possible that Jonathan asks the question in the context of a multi-tier service inventory architecture where we sometimes see implemented a customer-facing service inventory and a resource-facing service inventory, both managed by different organizations in a Service Provider (IT versus Networks folks, as an example).  Generally, the Activation function would fall in the same environment as the resource-facing service inventory function.  It could be that both organizations wish to retain their respective service instances in "Terminated" state in their respective service inventories. 

    How does the customer-facing system invoke the resource-facing system for actions (which may be viewed as activation actions)?  In that case, it could be that the API between the two systems, respectively owning the customer-facing versus resource-facing inventories, may benefit from using the Service Order API (TMF 641) (where you would invoke the "terminate" operation on the resource-facing service) instead of the Service Activation & Configuration API.  Within the resource-facing service system, following a service state transition to "Terminated" (in the RFS inventory), the Activation API could be invoked, towards the Activation function, with a proper "DELETE" operation.

    Cheers,
    Stéphan

    ------------------------------
    Stephan Pelletier
    STEPHAN PELLETIER CONSULTING INC.
    ------------------------------