Service Instantiation via ONAP NBI API (TM Forum)


The ONAP externalapi project is unmaintained.

ONAP NBI allow you to use a TM Forum standardized API (serviceOrder API).

ONAP NBI will convert that request to ONAP SO request.

ServiceOrder management in NBI will support 2 modes:

  • E2E integration - NBI calls SO API to perform an End-To-end integration

  • Service-level only integration - NBI will trigger only SO request at serviceInstance level (not at VNF, not at Vf-module level and nothing will be created on cloud platform)

ONAP SO prerequisite: SO must be able to find a BPMN to process service fulfillment (integrate VNF, VNF activation in SDNC, VF module)

The choice of the mode is done by NBI depending on information retrieved in SDC. If the serviceSpecification is within a Category “E2E Service” , NBI will use E2E SO API, if not only API at service instance level will be used.

There is no difference or specific expectation in the service order API used by NBI user.

Example of serviceOrder to instantiate (=add) a service based on model with id=0d463b0c-e559-4def-8d7b-df64cfbd3159

curl -X POST \ \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
  "externalId": "BSS_order_001",
  "priority": "1",
  "description": "this is a service order to instantiate a service",
  "category": "Consumer",
  "requestedStartDate": "",
  "requestedCompletionDate": "",
  "relatedParty": [
      "id": "JohnDoe",
      "role": "ONAPcustomer",
      "name": "JohnDoe"
  "orderItem": [
      "id": "1",
      "action": "add",
      "service": {
        "name": "my_service_model_instance_01",
        "serviceState": "active",
        "serviceSpecification": {
          "id": "0d463b0c-e559-4def-8d7b-df64cfbd3159"

In the response, you will obtain the serviceOrderId value.

Then you have the possibility to check about the serviceorder (here after the serviceOrderId=5d06309da0e46400017b1123).

This will allow you to get the serviceOrder Status (completed, failed…)

curl -X GET \ \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache'