/
CPS-1992: NCMP to Support new ProvMnS 3GPP sync single FDN request

CPS-1992: NCMP to Support new ProvMnS 3GPP sync single FDN request

References

 

Abbreviations

 

FNAbbreviation

Meaning

FNAbbreviation

Meaning

1

DN

Distinguished Name

2

ProvMnS

Provisioning Management Service

3

DC

Domain Component

4

MOI

Managed Object Instance

5

NRM

Network Resource Model
../{MnSName}/{MnSVersion} is called the NRM root.

6

IS

Information Service

7

SS

Solution Sets

Assumptions

Assumption

Notes

Sign-off

Assumption

Notes

Sign-off

1

API as defined in and already standardised see link TS28532_ProvMnS.yaml · REL-18 · All Groups / 5G APIs · GitLab

Approved version of document TBD - Working assumptions use TS 128 532 - V18.5.0 - 5G; Management and orchestration; Generic management services (3GPP TS 28.532 version 18.5.0 Release 18)

Feb 18, 2025 @Csaba Kocsis

2

Extending the current 3PP API is out of scope for this epic

As agreed. Go with the current 3GPP standard as of Feb 18, 2025

Feb 18, 2025 @Csaba Kocsis

3

FDN is DN

Is fully distinguished name same as distinguished name, TBD @Csaba Kocsis

 

4

Do we have to do anything about the callbacks that is specified in the ProvMns openapi spec file.

Out of scope

Feb 20, 2025 @Csaba Kocsis

5

Use restful solution see:https://www.etsi.org/deliver/etsi_ts/128500_128599/128532/18.05.00_60/ts_128532v180500p.pdf

12.1.1 RESTful HTTP-based solution set

 

AgreedMar 25, 2025 @Csaba Kocsis

Issues & Decisions

Issue

Notes 

Decision

Issue

Notes 

Decision

1

Question: can this interface be delivered as a separate OpenAPI definition?

Kieran Mccarthy A  asked if it could be developed separately from NCMP OpenApi definition files

Feb 18, 2025

  1. Separate artifact

  2. This will lead to some duplication

@Csaba Kocsis

2

When delivered, this should also support PolicyExecution for all write operations

CPS-2249: NCMP To support Conflict Handling (Policy Execution) using External Service - ONAP Wiki - Confluence point #6

Feb 18, 2025

  1. Shall support other write case aside the write usecase already implemented.

  2. Sync needed with coordination mgt team

@Csaba Kocsis

3

DMI Plugin registering with NCMP on /v1/ch interface about the 3GPP support and appending the data producer identifier. Prepending(DC=2)

 

Add additional fields to the v1/ch payload.

support3GPP28532 → boolean → ( Optional )

appendDataProducer → boolean → ( Optional )

 Feb 18, 2025

  1. Use DMI southbound interface as is currently

  2. Support for splitting should come later. Not a higher priority, it’s a nice to have.

    1. NCMP shall not prepend outgoing data

    2. AP @Kolawole Adebisi-Adeolokun Call a meeting with @Csaba Kocsis later before delivery of epic to flesh out how we can support multiple EMS

4

Client to mandatorily provide dataProducerIdentifier if the prependDataProducer is set and we have support for 3GPP28532 ?

 

if prependDataProducer and 3GPP28532 are present then dataProducerIdentifier has to be mandatorily present.

 

Feb 20, 2025 @Csaba Kocsis

5

if not provided then what is the behaviour. Do we reject the request and what will be the error code?

Introduce new Ncmp Response Status
113 : Inconsistent data producer information in registration

Feb 20, 2025 @Csaba Kocsis

6

support3GPP28532 and prependDataProducer is applicable for create , update , and upgrade for the /v1/ch and that too for the existing endpoint.

create : supported

update : supported from blank( not defined) to some value. ( Hint use Boolean object type ) → similar to alternate id concept.

Feb 20, 2025 @Csaba Kocsis

7

fields ( support3GPP28532 and prependDataProducer ) as searchable ?

no

Feb 20, 2025 @Csaba Kocsis

8

NCMP to update the existing endpoints
OR
NCMP to expose separate endpoints which are compliant with 3GPP standards as provided https://forge.3gpp.org/rep/all/5G_APIs/-/blob/REL-18/TS28532_ProvMnS.yaml

Analysis on existing and 3gpp endpoints below.

Mar 25, 2025 New 3GPP endpoints

AP @Csaba Kocsis to review the table below and fill in the details. See issue #15

9

Do we support all the Content Type that is mentioned in the openapi specs file ? Eg : application/merge-patch+json , application/3gpp-merge-patch+json , application/json-patch+json , application/3gpp-json-patch+json

 

AP @Csaba Kocsis what all content type will be supported in the new 3GPP endpoints.

10

Do we have to sync the responses for the ProvMnS supported endpoints as mentioned in the 3gpp doc TS 128 532 ?

Optional to return the responses.

AP @Csaba Kocsis or @Priyank Maheshwari Double check the document if the responses are optional.

We wont do it if it is optional.

Response Mar 18, 2025

→ Foreword: “In the present document, modal verbs have the following meanings:

shall indicates a mandatory requirement to do something

shall not indicates an interdiction (prohibition) to do something”

→ 11.1.1.1.1: “the "createMOI" response shall be returned immediately after the creation of the object.“

Assume DMI will return response and we will forward it on (Synchronous operation).

11

Check for the response of the GET operation.

check if it matches what DMI currently responds.

AP @Priyank Maheshwari

Response Mar 3, 2025

→ Response from NCMP has prefix attached as root.

→ Contains id and attribute field which is same as 3GPP API.

→ Does not contain objectClass and objectInstance

12

Error reporting for all the operations.

verify if the error handling is optional.

If not then we need to discuss more about handling it.

AP @Priyank Maheshwari


Response Mar 3, 2025
Check the Section 6.6.3 of TS 32 158.

  • type property is mandatory that provides high level error information. ( See section 6.6.4 for valid values of type )
    type is an enum with valid values like VALIDATION_ERROR , MODIFICATION_NOT_ALLOWED and these corresponds to a HTTP status code.

13

Check if any deviation in the response codes?

Note :
Attempts to read the NRM root only shall return "204 No Content". - from TS 32 158 ( Section 4.4.4 TS 32 158 )

Do we have similar constraints at other places as well ?

Also see section 6.6.2 of TS 32 158

Use best judgement - use error codes seen in section 6.6.2 of TS 32 158

AP @Csaba Kocsis return and revise what error codes to be used in what scenario. (Resolve happy case first)

14

Remove

"support3GPP28532" : true, "prependDataProducer" : true

only use below as 3GPP compliancy indicator

"dataProducerIdentifier" : "2"

 

Accepted - DataProducerIdentifier field will indicate 3GPP compliancy

DC field could also be included as part of FDN for incoming request to NCMP

15

Does E want to implement a fall back solution if cmhandle is not 3GPP compliant?

 

AP @Csaba Kocsis To revert

Requirements

Functional

Interface

Requirement

Additional Information

Signoff

Interface

Requirement

Additional Information

Signoff

1

CPS-E-10

Support the ProvMnS endpoint towards the Northbound API.

( create , delete , read , update and patch )

 

Notification support is out of scope.

Feb 20, 2025 @Csaba Kocsis

2

CPS-E-10

DMI plugins shall be able to indicate that they support 3GPP API.

Boolean attributes to be introduced during the discovery process.

Feb 20, 2025 @Csaba Kocsis

3

CPS-E-10

By default NCMP shall support DMI API on its southbound interface towards the DMI plugins for CH and 3GPP Northbound APIs

@Toine Siebelink
Actually I now think I misinterpreted your wording. and I think we agree on the required default behaviour

 

4

CPS-E-10

DMI plugins shall be able to indicate if they want the dataProducerId to be inserted by NCMP into the FDN as the first DC component when a request comes on the 3GPP Northbound API.

 

 

5

CPS-E-10

If a DMI plugin indicated that the dataProducerId needs to be inserted into the FDN then the dataProducerId must be supplied when creating a CMHandle.

No change in NCMP needed.

Requirement of the client using the interface.

 

Error Scenarios

Error Scenario

Expected behavior

Sign-off

Error Scenario

Expected behavior

Sign-off

1

 

 

 

Characteristics

Parameter

Expectation

Notes

Sign-off

Parameter

Expectation

Notes

Sign-off

1

 

 

 

 

Out-of-scope

  1. API as defined in and already standardised - TS28532_ProvMnS.yaml · REL-18 · All Groups / 5G APIs · GitLab

  2. Extending the 3PP API is out of scope for this epic

 

Analysis on NCMP existing endpoints and proposed 3GPP endpoints

 

As per the document https://www.etsi.org/deliver/etsi_ts/128500_128599/128532/18.05.00_60/ts_128532v180500p.pdf [ TS 128 532 Section 12 under Management Services ]

3GPP Supported Endpoints/Operations

URI : https://{MnSRoot}/ProvMnS/{MnSVersion}/{URI-LDN-first-part}/{className}={id}

image-20250206-141237.png

NCMP Supported Endpoints/Operations

Below are the NCMP supported endpoints.

URI : /v1/ch/{cm-handle}/data/ds/{datastore-name} → Supports POST, PUT, GET , DELETE and PATCH

 

IS operation

3GPP HTTP Verb

NCMP Http Verb

NCMP Interface and method

IS operation

3GPP HTTP Verb

NCMP Http Verb

NCMP Interface and method

1

createMOI

PUT

POST

CPS-E-05 createResourceDataRunningForCmHandle

2

getMOIAttributes

GET

GET

CPS-E-05 getResourceDataForCmHandle

3

modifyMOIAttributes

PUT

PUT

CPS-E-05 updateResourceDataRunningForCmHandle

4

modifyMOIAttributes

PATCH

PATCH

CPS-E-05 patchResourceDataRunningForCmHandle

5

deleteMOI

DELETE

DELETE

CPS-E-05 deleteResourceDataRunningForCmHandle

6

changeMOIs

PATCH

PATCH

CPS-E-05 patchResourceDataRunningForCmHandle

Mapping of 3GPP API and NCMP API

3GPP API : {MnSRoot}/ProvMnS/{MnSVersion}/{URI-LDN-first-part}/{className}={id}

NCMP API : /v1/ch/{cm-handle}/data/ds/{datastore-name}

createMOI

parameter location

createResourceDataRunningForCmHandle

parameter location

createMOI

parameter location

createResourceDataRunningForCmHandle

parameter location

className ( string )

path

datastore-name ( string )

path

id ( string )

path

cm-handle ( string )

path

id ( string )

request-body

resourceIdentifier ( string )

query

objectClass ( string )

request-body

Content-Type ( string )

header

objectInstance ( string )

request-body

Authorization ( string )

header

attributes ( object )

request-body
( application/json )

content ( object )

request-body
( application/json and application/yang-data+json )

Mapping of parameters from 3gpp createMOI to Ncmp createResourceDataRunningForCmHandle ( @Csaba Kocsis to review and fill in the details)

3GPP Parameter

NCMP Parameter

Notes

3GPP Parameter

NCMP Parameter

Notes

1

{URI-LDN-first-part}/{className}={id}

alternateId + resourceIdentifier

The alternateId is not the same as the URI-LDN-first-part and the resourceIdentifier is not the same as the className=id.

However together they are the same.

2

NA

datastore

There is no concept of datastores in 3GPP.

3

NA

CMHandle

3GPP uses DNs only. CMHandle ID must not be used with this API. Only the alternateId

4

request body

request body

It is not exactly the same format but it is passthrough to you anyways.

5

NA

Autherization

3GPP does not specify authentication method.

getMOIAttributes

parameter location

getResourceDataForCmHandle

parameter location

getMOIAttributes

parameter location

getResourceDataForCmHandle

parameter location

className ( string )

path

datastore-name ( string )

path

id ( string )

path

cm-handle ( string )

path

scope ( object )
{
"scopeType": "BASE_ONLY",
"scopeLevel": 0
}

query

resourceIdentifier ( string )

query

filter ( query )

query

options ( string )

query

attributes ( array of string )

query

topic ( string )

query

fields ( array of string )

query

include-descendants ( boolean )

query

dataNodeSelector (string)

query

Authorization ( string )

header

Mapping of parameters from 3gpp getMOIAttributes to Ncmp getResourceDataForCmHandle( TBD )

3GPP Parameter

NCMP Parameter

Notes

3GPP Parameter

NCMP Parameter

Notes

1

{URI-LDN-first-part}/{className}={id}

alternateId + resourceIdentifier

The alternateId is not the same as the URI-LDN-first-part and the resourceIdentifier is not the same as the className=id.

However together they are the same.

2

NA

datastore

There is no concept of datastores in 3GPP.

3

NA

CMHandle

3GPP uses DNs only. CMHandle ID must not be used with this API. Only the alternateId

4

scope

include-descendants

include-desendants partially covers the functionality of the scope. Scope gives you more control over which ones of the child objects the user wishes to retrieve.

5

attributes, fields

options=(fields)

Both the attributes and the fields parameter in 3GPP are meant to select the “attributes” of an MOI. The attributes are used for leaf nodes, fields are used for containers and lists.

6

filter

options=(scope)

 

7

dataNodeSelector

options=(fields&scope) + include-descendants

dataNodeSelector covers the functionality of the filter, scope, attributes and fields.

8

NA

topic

No async support in 3GPP

9

NA

Authorization

3GPP does not sepcify authentication method.

modifyMOIAttributes

parameter location

updateResourceDataRunningForCmHandle

parameter location

modifyMOIAttributes

parameter location

updateResourceDataRunningForCmHandle

parameter location

className ( string )

path

datastore-name ( string )

path

id ( string )

path

cm-handle ( string )

path

id ( string )

request-body

resourceIdentifier ( string )

query

objectClass ( string )

request-body

Content-Type ( string )

header

objectInstance ( string )

request-body

Authorization ( string )

header

attributes ( object )

request-body
( application/json )

content ( object )

request-body
( application/json and application/yang-data+json )

Mapping of parameters from 3gpp modifyMOIAttributes to Ncmp updateResourceDataRunningForCmHandle( TBD )

3GPP Parameter

NCMP Parameter

Notes

3GPP Parameter

NCMP Parameter

Notes

1

See createMOI

 

 

2

 

 

 

modifyMOIAttributes

parameter location

patchResourceDataRunningForCmHandle

parameter location

modifyMOIAttributes

parameter location

patchResourceDataRunningForCmHandle

parameter location

className ( string )

path

datastore-name ( string )

path

id ( string )

path

cm-handle ( string )

path

id ( string )

request-body

resourceIdentifier ( string )

query

objectClass ( string )

request-body

Content-Type ( string )

header

objectInstance ( string )

request-body

Authorization ( string )

header

attributes ( object )

request-body
( application/merge-patch+json , application/3gpp-merge-patch+json , application/json-patch+json , application/3gpp-json-patch+json)

content ( object )

request-body
( * / * )

Mapping of parameters from 3gpp modifyMOIAttributes to Ncmp patchResourceDataRunningForCmHandle( TBD )

3GPP Parameter

NCMP Parameter

Notes

3GPP Parameter

NCMP Parameter

Notes

1

See createMOI

 

 

2

 

 

 

deleteMOI

parameter location

deleteResourceDataRunningForCmHandle

parameter location

deleteMOI

parameter location

deleteResourceDataRunningForCmHandle

parameter location

className ( string )

path

datastore-name ( string )

path

id ( string )

path

cm-handle ( string )

path

 

 

resourceIdentifier ( string )

query

 

 

Content-Type ( string )

header

 

 

Authorization ( string )

header

Mapping of parameters from 3gpp deleteMOIto Ncmp deleteResourceDataRunningForCmHandle( TBD )

3GPP Parameter

NCMP Parameter

Notes

3GPP Parameter

NCMP Parameter

Notes

1

See createMOI

 

 

2

 

 

 

Background

There is a requirement that NCMP should support 3GPP 28.532 API. The current plan is that NCMP accepts requests on this API and forward it to DMI plugins using the DMI API. However this is a wasteful approach if the Southbound system supports 3GPP 28.532. It would be more efficient if NCMP could simply forward the requests as-is for such DMI plugins.

Proposal

Add two new fields for creating new cmhandles and updating existing ones:

Name

Description

Type

Mandatory

Name

Description

Type

Mandatory

1

support3GPP28532

DMI plugin indicates that it supports 3GPP 28.532

boolean

No

2

appendDataProducer

DMI plugin indicates that it needs the dataProducerId added to the FDN as DC.

Only applicable for the 3GPP API.

boolean

No

POST [https://%3ceic-domain%3e/ncmpInventory/v1/ch]https://<eic-domain>/ncmpInventory/v1/ch { "dmiDataPlugin": https://eric-eo-enm-adapter, "dmiModelPlugin": https://eric-oss-enm-model-adapter, "createdCmHandles": [{ "cmHandle": "123456789", "cmHandleProperties": { "subSystem":"2", "targetDnPrefix":"SubNetwork=Europe", "targetNode":"ManagedElement=LTE01dg2ERBS00001", "nodeModelIdentity":"22.Q1-R48A08", "ossModelIdentity":"22.Q1-R48A08", "softwareSyncStatus":"AS_IS", "neType": "RadioNode", }, "publicCmHandleProperties" : { "emsId" : "2" }, "dataProducerIdentifier" : "2", "alternateId" : "/SubNetwork=Europe/ManagedElement=LTE01dg2ERBS00001", "support3GPP28532" : true, "prependDataProducer" : true }] }

 

Read request coming on the NCMP 3GPP 28.532 API:

GET https://%3ceic-domain%3e/ProvMnS/v1/SubNetwork=Europe/ManagedElement=LTE01dg2ERBS00001?scopeType=BASE_ONLY

Forwarded request to DMI plugin (ENM Adaper):

GET https://eric-eo-enm-adapter/ProvMnS/v1/DC=2/SubNetwork=Europe/ManagedElement=LTE01dg2ERBS00001?scopeType=BASE_ONLY

Forwarded request to ENM:

GET https://%3ccustomer-domain%3e/enm-nbi/cm/v1/data/SubNetwork=Europe/ManagedElement=LTE01dg2ERBS00001?scopeType=BASE_ONLY

Feb 20, 2025

We also discussed alternatives to work with the existing DMI northbound interface or have a new one to accommodate the addition of new domain component ( DC = <dataProducerIdentifier> )in the URI.

Alternate Solutions

Alternatives

Notes

Sign-Off

Alternatives

Notes

Sign-Off

1

Use the existing DMI northbound interface and when NCMP adds DC to the URI then DMI will do additional work of translation for 3GPP supported devices and further forward it to EMS.

 

2

Add a new operation to the existing DMI northbound interface which is already been used by NCMP and just add additional details which are needed. Also remove the details which are not in use ( eg. private cm handle properties )

 

3

Altogether a new northbound interface for DMI to accommodate the new ProvMnS operations coming from NCMP.

 

Solution

The solution chosen is to receive the call, append dataProducerIdentifier in the cm handle and forward a modified query to the DMI

New field to be added to cm handle model

"dataProducerIdentifier" : "2",

Example

POST [https://%3ceic-domain%3e/ncmpInventory/v1/ch]https://<eic-domain>/ncmpInventory/v1/ch { "dmiDataPlugin": https://eric-eo-enm-adapter, "dmiModelPlugin": https://eric-oss-enm-model-adapter, "createdCmHandles": [{ "cmHandle": "123456789", "cmHandleProperties": { "subSystem":"2", "targetDnPrefix":"SubNetwork=Europe", "targetNode":"ManagedElement=LTE01dg2ERBS00001", "nodeModelIdentity":"22.Q1-R48A08", "ossModelIdentity":"22.Q1-R48A08", "softwareSyncStatus":"AS_IS", "neType": "RadioNode", }, "publicCmHandleProperties" : { "emsId" : "2" }, "dataProducerIdentifier" : "2", "alternateId" : "/SubNetwork=Europe/ManagedElement=LTE01dg2ERBS00001" }] }

 

 

 

Related content