Open APIs

 View Only
  • 1.  ProductSpec vs ServiceSpec characteristics in order decomposition

    TM Forum Member
    Posted Sep 24, 2025 03:17

    Hi all,

    I'm working with TMFC003 Product Order Delivery Orchestration and I've run into a challenge I guess many of us have seen.

    When decomposing a Product Order into a Service Order, the characteristics on the ProductSpecification side don't always line up neatly with the ServiceSpecification side. For example:

    • ProductSpecification has separate characteristics like:

      • downloadSpeed = 1000 Mbps

      • uploadSpeed = 300 Mbps

      • serviceLocation = ID123

    • ServiceSpecification expects something different:

      • bandwidthProfile = {1000/300}

      • endpointLocation = ID123

    So we need mapping logic to transform product-level attributes into the service-level attributes the network actually understands.

    I know TMF620 lets us link ProductSpec directly to ServiceSpec, but the APIs themselves don't define how to do the transformation.

    👉 Has anyone here already solved this in practice?

    • Do you keep somehow the mapping rules in the catalog (TMF620/TMF633)?

    • Or is it something you implement directly inside TMFC003 orchestration?

    • Or do you offload it into a different component?

    How do you handle this? Could anybody share experiences about what worked well (or didn't).

    Thanks!



    ------------------------------
    Jan Brnka
    T-Mobile Czech & Slovak Telekom, a.s.
    ------------------------------


  • 2.  RE: ProductSpec vs ServiceSpec characteristics in order decomposition

    TM Forum Member
    Posted Sep 25, 2025 07:18

    Hi,

    I'll outline a consistent solution for managing service and product catalogs that I have succcesfully implemented for multiple CSPs. This approach, while effective, requires API modifications, which may not be universally accepted.1. Service Catalog CreationAccording to SID Resource and Service Catalog are designed first and the ProductCatalog builds on this. The service catalog is a repository used by the technical team (e.g., ODA production) to define and expose service capabilities.We begin by defining an Internet Service in the service catalog:
    • ServiceSpecification (Internet)
      • Characteristic Specifications:
        • downloadSpeed: Options (1000/300/100 Mbps)
        • uploadSpeed: Options (300/100/30 Mbps)
    Our systems enforce predefined profiles due to dependencies between downloadSpeed and uploadSpeed values. To address this, we create a ServiceCandidate for each valid profile. For example, the 1000/300 profile:
    • ServiceCandidate (1000/300)
      • Characteristics:
        • downloadSpeed = 1000 Mbps
        • uploadSpeed = 300 Mbps
    2. Product Catalog CreationNext, we define a ProductSpecification in the product catalog to represent the marketable Internet product:
    • ProductSpecification (Internet)
      • @type
        : NetworkProductSpec
      • Characteristic Specifications:
        • downloadSpeed: Options (1000/300/100 Mbps)
        • uploadSpeed: Options (300/100/30 Mbps)
    The @type is filled with values according to SID Principles for Products. In this case NetworkProductSpec defines the Workflow for NetworkProducts in The TMFC003 orchestration (e.g. manage  TMFC005 Product Inventory and offload to TMFC007 Service Order Management).
    For each profile, we create a ProductOffering:
    • ProductOffering (Internet L)
      • ServiceCandidate: Refers to ServiceCandidate (1000/300)
      • Characteristics: Automatically inherited from ServiceCandidate
        • downloadSpeed = 1000 Mbps
        • uploadSpeed = 300 Mbps
      • ProductOfferingPrice: €25/month (recurring)
    3. Product Order ProcessingA ProductOrder leverages catalog data for simplicity. Characteristics in the ProductOrder should only be used in rare cases (e.g. color), the majority of characteristics is defined in ProductOffering.
    • ProductOrder
      • Item 1:
        • productOffering: Internet L
        • product:
          • place: ID123 (e.g., customer location)
    4. Service Order TranslationThe TMFC003 component translates this ProductOrder into a ServiceOrder:
    • ServiceOrder
      • Item 1:
        • ServiceCandidate: (1000/300)
        • service:
          • place: ID123

    I hope this helps you. Some members of TMF don't like the ServiceCandidate and ResourceCandidate and therefore they are not fully developed in the API. In my view they are essential to avoid customisation in orchestration platforms.

    Regards



    ------------------------------
    Koen Peeters
    Ciminko SA
    ------------------------------



  • 3.  RE: ProductSpec vs ServiceSpec characteristics in order decomposition

    TM Forum Member
    Posted Sep 26, 2025 11:06

    Hi Koen,

    Thanks for sharing your implementation approach - very clear and pragmatic. I've reviewed your post and would like to reflect back my understanding, along with a few open questions that arise.

    ✅ Summary of Key Takeaways

    • ProductOffering with fixed characteristics: Each offering represents a predefined profile (e.g., 1000/300 Mbps), with characteristics fixed and inherited from the corresponding ServiceCandidate. This simplifies ordering and orchestration.

    • ServiceCandidate as technical anchor: I understand you're using ServiceCandidate to represent valid combinations of service characteristics, effectively acting as the technical equivalent of ProductOffering.

    • Characteristic alignment: Both ProductSpecification and ServiceSpecification define similar characteristics (e.g., downloadSpeed, uploadSpeed), and the mapping is straightforward when profiles are fixed.

    • Use of @type: NetworkProductSpec: This helps distinguish network-related products and supports orchestration logic in TMFC003.

    👉 Quick question: Do you create a new @type for each new ProductSpecification, or is NetworkProductSpec reused across multiple specs?

    ❓ Open Questions and Observations

    • Service decomposition into RFS and resources: In practice, ServiceSpecifications often decompose into multiple ResourceFacingServices (RFS) and ResourceSpecifications. Your post doesn't mention this layer - is it something you handle separately, or do you abstract it behind the ServiceCandidate?

    • Transformation logic location:

      Even with fixed profiles, mapping logic is sometimes needed. For example, in my hypothetical case:

      • ProductSpec has downloadSpeed = 1000, uploadSpeed = 300, serviceLocation = ID123

      • ServiceSpec expects bandwidthProfile = {1000/300}, endpointLocation = ID123

      So we need a transformation layer to convert product-level attributes into service-level ones. Do you handle this in TMFC003, or somewhere else?

    • Scalability of fixed profiles: For large catalogs with many variants (e.g., speed tiers, contract durations, optional features), the number of ProductOfferings and ServiceCandidates can grow quickly. Have you encountered limits or strategies to manage this complexity?

    Thanks again for the detailed breakdown. I'd be keen to hear how you approach the deeper service/resource decomposition and whether you've found a clean way to keep it manageable across TMF APIs.



    ------------------------------
    Jan Brnka
    T-Mobile Czech & Slovak Telekom, a.s.
    ------------------------------



  • 4.  RE: ProductSpec vs ServiceSpec characteristics in order decomposition

    TM Forum Member
    Posted Sep 29, 2025 10:38

    Hi Jan,

    your takeaways are correct.

    I use the "@type" for ProductSpecification to represent the logic from SID for ProductSpecification subclasses. Understanding this simple diagram is the difference between configuring and customizing.

    That means NetworkProductSpec defines a product is implemented as a service. For the TMFC005 this means handover via ServiceOrder. The same NetworkProductSpec is used for all cases where a handover to ServiceOrder is required: Internet, Voice, TV, E-Line, VPN, ....

    All the other classes of ProductSpecification use a different flow in TMFC005: ResourceOrder, WorkOrder, ShippingOrder, Billing config, .... If a TMFC005 implementation contains a flow for each of these classes, there is no need for customizing, only for catalog configuration.

    • Service Decomposition should be handled in TMFC007 and was indeed not detailed in my answer.  but I will try to summarize my approach to service orchestration. As a rule of thumb, create the ServiceSpecification for the RFS first. An RFS represent a single API call to a service platform. Map each custom API of the service platform to TMF640 and document the ServiceSpecification for the RFS with its characteristics and supportingResources in the catalog. Some parameters in the custom API will be supportingResources! If the API uses profiles create a ServiceCandidate(RFS) for each profile. Then combine the RFS in a CFS by defining the ServiceSpecification for the CFS. And do the same for the ServiceCandidates. Use a simple TMFC007 implementation that has a fixed orchestration logic that can only be configured through the Service Catalog. 
    • Transformation Logic: Obviously a transformation logic can be build in TMFC003. However, I try to avoid this in my implementations. If the ServiceSpecification and ProductSpecification are defined more verbose in the catalog, there is often no need for transformations. That is why in my example the ServiceSpecification contains characteristics for downloadSpeed and uploadSpeed although only the profile is required for the serviceOrdering. More analysis leads to cleaner implementations.
    • Scalability of fixed profiles: The number of ProductOfferings and ServiceCandidates are only entries in a catalog. The technical limits for number of entries in a catalog are largely sufficient. The real question is: what is more flexible and easier to manage, more entries in a catalog or more lines of code? Everybody is entitled its own opinion, but I will choose to avoid customization whenever possible. 

    I hope this helps.



    ------------------------------
    Koen Peeters
    Ciminko SA
    ------------------------------



  • 5.  RE: ProductSpec vs ServiceSpec characteristics in order decomposition

    TM Forum Member
    Posted Sep 26, 2025 01:01

    Hi Jan Brnka,

    Given that the TMF-620 is a template and the Order Decomposition needs to use the attributes of the Order Item (instance of the Product Offering), mapping /transformation will be an essential step. Decomposition mapping from Source (Customer Product Order Item) to Service Order Item will be required (and this stem enables 1:1 / 1:Many / Many:1 transformation as well besides simple attribute mapping).



    ------------------------------
    Barathan Venkateswaran
    Salesforce
    ------------------------------