I get your point - but you should be aware that neither TMF640, nor TMF638 are intended as 'enrichment' API's.
I would, if you intend to do this, implement your TMF640 Collect method, but I would persist the results in TMF638 - under relatedEntityRefOrValue (from TMF638 v4 and later specifications), returning success or failure on the operation (TMF640 is not supposed to 'return' much else).
Then you can read the CFS details from TMF638 and in that manner retrieve the collected data.
Original Message:
Sent: May 28, 2026 03:18
From: Frederic Thise
Subject: Design choice for TMF640 "collect" response – looking for feedback
Hi Peter,
I have not described our full service portfolio but we are indeed using various TMF repository/inventory APIs like TMF638 and TMF639. When I mentioned that Option 1 would return the inventory part, it was from our ServiceInventory ;)
Anyway TMF640 and TMF638 suffer from the same issue regarding relatedEntity property.
Best regards,
------------------------------
Frederic Thise
Proximus SA
Original Message:
Sent: May 28, 2026 03:09
From: Peter Eksteen
Subject: Design choice for TMF640 "collect" response – looking for feedback
Hi Frederic,
I notice that there is no mention of a TMF638 service inventory? Normally you would expect that the services would also be persisted (possibly off the TMF640 processes) in TMF638 - which would provide you with both a read interface, and notifications of changes.
Have you considered that approach?
------------------------------
Peter Eksteen
Product Manager
CIENA Blue Planet
Original Message:
Sent: May 27, 2026 11:02
From: Frederic Thise
Subject: Design choice for TMF640 "collect" response – looking for feedback
Hi all,
I would appreciate your feedback on a design choice we are currently evaluating regarding network data collection exposed at the CFS layer.
Context
In our OSS landscape, we have an application called XSO that exposes several APIs (e.g. TMF640, TMF641, TMF653, TMF645).
At the CFS level, XSO provides a TMF640 Service Activation & Configuration interface, which:
- Decomposes CFSs into RFSs (catalog- and rule-based)
- Delegates activation to multiple NSALs (Network Service Activation Layers)
- Each NSAL manages one or more RFSs and underlying Resources
Objective
We want to introduce a "collect" operation on the XSO TMF640 (CFS level), allowing applications to retrieve live/stored network information.
Key characteristics:
- The collect operation is cascaded to NSALs via their own TMF640 collect operations
- Supports both synchronous and asynchronous modes (events via TMF688)
- Uses TMF662 Entity Catalog to define the hierarchy of collectable entities (CFS → RFS)
- EntitySpecifications are linked to ServiceSpecifications (TMF633) via
entitySpecRelationship
Request Structure (simplified example)
The collect operation accepts a list of entities describing what data to retrieve:
[ { "name": "cpe.liveInfo", "characteristic": [ { "name": "identifier", "valueType" : "object", "value": { "type": "uniqueId", "value": "uniqueId of a device" } } ], "entitySpecification": { "id": "id of entity spec collect.cpe.liveInfo" } }]
This is posted to TMF640: POST /service/{id}/collect
Notes:
- The request targets a specific CFS instance
- Optional identifiers allow filtering (e.g. specific device vs all)
- Based on the specification, the system determines which RFS/NSALs to invoke
Design Question: What should the response look like?
We are currently considering three options:
Option 1 – Return a CFS enriched with collected data (relatedEntity by value)
- Aggregate network data from NSALs and attach it to the CFS as
relatedEntity (by value)
Pros
- Single call returns both:
- Service inventory (CFS + RFS)
- Collected network data
Cons
- TMF640 (v4/v5) Swaggers do not support
relatedEntity by value - Data models suggest support, but Swagger definitions appear inconsistent
- TMF702 (Resource Inventory) does not include
relatedEntity - Would require extending both TMF640 and TMF702 APIs
Option 2 – Return a list of collected entities
- Response mirrors the request: list of entities (tree structure using
entityRelationship) returned
Pros
- No API extension required
- Clean and symmetric (entities in / entities out)
Cons
- No service inventory context (CFS/RFS) included in the response (could be through entities though...)
Option 3 – Return a CFS with relatedEntity by reference
- Store collected data in Entity Inventory (TMF703)
- Return references (
relatedEntity by ref) in the CFS
Pros
- No change required on TMF640
- Aligns with persistence strategy (TMF703)
Cons
- Requires additional calls to retrieve actual data
- Increased complexity for consumers
- Still requires some extension on TMF702
- Not our preferred option
Question to the community
Which option would you recommend, and why?
In particular:
- Have you faced similar challenges when exposing "collect" or telemetry-like operations?
- How do you balance API purity (TMF compliance) vs usability (single-call vs multi-call patterns)?
- Any best practices around using TMF662 / TMF703 in this context?
Best regards,
------------------------------
Frederic Thise
Proximus SA
------------------------------