Thanks all for your answer,
At the beginning, we were looking at adding new states/sub-states. We realized that it won't be sufficient, for many reasons (need to return sometimes the Pending view or Active view of the Service, need to revert back to previous version of the service).
Concept of versions became important like @Jonathan Golder mentionned. Adding Version at the Service level will defeat our idea of a unique {id} for the service (Every new version = new record in our datastore)
In the same idea
@Stephan Pelletier eluded,, the concept of Service and Service Configuration are separate in our mind
We are looking into adding a new object under Service :
- Service (contains the id, have static characteristics, have state like "Pending" or "Active")
- ServiceConfigurations (1-to-many relationship with Service, contain the versions, have to Characteristics that are varies with the Configuration, have states like "Pending-Assign")
With this in place, we could achieve our goals like:
- Having a history of all the configurations of the service
- Ability to return Pending vs In-Service view to external systems
- Ability to compare 2 configurations to analyse delta
- Ability revert back to previous configuration in case of cancel Order
Regards,
Stef
------------------------------
Stephane AH-KO
CGI Info Systems Management Consulting Inc.
------------------------------
Original Message:
Sent: Dec 10, 2019 10:34
From: Stephan Pelletier
Subject: TMF638 - Service Inventory - State Life Cycle
Salut Stéphane!
The best is to separate the service lifecycle management from its design or configuration lifecycle management. TMF638 only deals with actions on a service, but your Inventory should support both the lifecycle of the service and of its design/configuration separately. The service lifecycle reflects the operational state of the service, while its configuration lifecycle reflects its detailed definition.
During a service modification, requested via TMF638 on an "Active" service, the service can remain in its current state (for the most part – see further), while you can go through a complete lifecycle for a new configuration version (containing all values of the current version, which you then modify as needed, such as bandwidth, through its configuration Design & Assign logic).
As you go through the new configuration version lifecycle, it reaches some "Designed" state (meaning, your Design&Assign has completed its job). This may generate an event or you may invoke a process (such as "calculate technical actions") which will ultimately lead to a Service Activation action. It is during the service activation duration that your service may flicker from its Active state.
As your systems go through Service Activation (which may take seconds to a minute or so), you could decide (I would 😉 ) to use an interm service state (possibly not defined in TMF638) such as "Active_pending" (or "Pending"), as you are really, during this time, in a service disruption situation (which may or may not be service affecting). During this service activation time, if there were a query, you'd get "Active_pending" or "Pending", but anytime before the service activation is triggered, you'd still get an "Active" state.
Once the Service Activation successfully completes, then you can move your "Designed" configuration state to "Issued" and/or "Completed", make that new configuration version the active one (replacing the previous version), and then push your service state from "Active_pending" or "Pending" back to "Active".
When you get a cancellation of the order, you simply change the design/configuration state of the new configuration version (which is presumably still undergoing Design&Assign) to "Canceled", effectively never affecting the service state itself which remained "Active". (There is a Point of No Return situation, for order cancellations, once automated Service Activation has been initiated, but that's a longer discussion.)
Hope this helps!
Cheers,
Stéphan
------------------------------
Stephan Pelletier
STEPHAN PELLETIER CONSULTING INC.
Original Message:
Sent: Dec 09, 2019 12:19
From: Stephane AH-KO
Subject: TMF638 - Service Inventory - State Life Cycle
Hi,
In TMF638, the service follows a lifecycle.
- If we take a simple example, on the initial order, the Service will go from "Feasibility Checked" to "Designed" to "Reserved" to "Active"
- Each of those state changed will trigger a ServiceStateChangeNotification event
Let's imagine, few years later, the customer issues a Change Order which trigger a change in the service (Let's say customer is changing his Internet Speed)
What is expecting from a Service Inventory LifeCycle perspective?
- Is the Service Instance of TMF638 supposed to show the pending activities when the Service is already active?
- Is the state going back from "Active" to "Designed" then "Reserved"... to end "Active" again?
- Or we don't show the pending States and the Service stays "Active" all a along?
- If we need to show the Pending states,
- If an external system triggers a GET Service/{Id}, is the expectation to return the "Active" State, or the "Pending" one?
- I have seen the concept of ServiceConfiguration or version in the model. Is the assumption that there is always one 1 instance of the Service (the latest one which overwrites the previous one everytime)?
- How do we handle a cancellation of the Order? State will go back from "Designed" (for example) to "Active"? Our datastore will need to bring back the characteristics of the Service before the modification?
Regards
------------------------------
Stephane AH-KO
CGI Info Systems Management Consulting Inc.
------------------------------