Skip to end of metadata
Go to start of metadata

The  VID-MSO Service Instantiation API is used to orchestrate OpenECOMP infrastructure VNFs.

With this API, the VID sends a series of service instantiation API requests to MSO to build an infrastructure Service. A Service consists of one or more related VNFs, with each VNF deployed as one or more VF Modules. A VF Module may have an optional Volume Group, which would be orchestrated first. A Volume Group is a collection of  one or more Volumes that will persist beyond the life of the VM it is attached to. This allows for persistent data if so required. The MSO interface also supports orchestration of external networks that could span tenants.

The  VID-MSO Service Instantiation Interface Design specification describes the VID-MSO interface in more detail.

  • No labels


  1. Is "VID-MSO Service Instantiation API" exactly the same as "MSO API" or a subset of it?

    If it's the latter (which I'm guessing it might be) where is documentation on the full MSO northbound API to any/all clients, not just VID?

  2. The VID-MSO Service Instantiation Interface Design API document linked above contains the phrase:

    "Note: VID will not be handling network orchestration requests in some of its releases."

    Could someone enlarge on this please?

    • Which releases will/will not handle network Orchestration requests?
    • If VID isn't handling Network Orchestration requests, which component is handling them?
    • Will MSO be handling them?


  3. the "VID-MSO Service Instantiation API"  is exactly the same as "MSO API".

  4. I have some queries regarding MSO-API,

    1.can SO component is docker'ized?

    2.can MSO-api handler in SO component helps to communicate using REST(when so component is dockerized)?

    EG: whether the following api is exposed when SO component is dockerised?





  5. We do have plans to "containerize" the SO application in the Beijing release.  That is, to break it apart into multiple containers to facilitate scalability, reliability, and extensibility.  One of the goals will be to make it easier to extend the API handler logic to meet specific application requirements.  I'm not exactly sure what that will look like yet.

  6. I want to add one more thing,

    Since MSO-api handler is developed with the help of JAX-RS framework ,I used jetty inorder to access the rest i tried running the jetty server in SO component at a specific port.The jetty server gets started but still i can't able to reach the end-point.

    For eg: I can't able to reach the (@Path("orchestrationRequests/{version:[vV][2-5]}") in through REST.

    Can someone help on these.


    1. Hi, here is the request I'm using, it's working fine.

      curl -X GET \
        http://<url>:<port>/ecomp/mso/infra/orchestrationRequests/v2/ \
        -H 'Accept: application/json' \
        -H 'Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' \
        -H 'Content-Type: application/json' \
        -H 'X-FromAppId: Postman' \
        -H 'X-TransactionId: get_request_status'
      1. Hi,Thanks.Now the request works fine in my ONAP environment.

        Response for the request:


        Also I want to understand the REST requests to MSO component(MSO-API) like the request above.Is there any way in exploring inorder to understand the REST end-points?.(Like doing trial and error on REST end-points).


        1. i have the same concern.

  7. Hi

    We are trying to delete the VF module from MSO. The curl DELETE operation requires JSON file for the same.

    The CURL query to delete VF module from MSO :

     curl -X DELETE --data "@b.json" -H 'Accept: application/json' -H 'Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' -H 'Content-Type: application/json' -H 'X-FromAppId: Postman' | python -m json.tool

    The b.json file used for DELETE from MSO :

    "requestDetails": {
    "modelInfo": {
    "modelType": "vfModule",
    "modelInvariantId": "069a1526-5e92-44d2-ad47-4387f989ab98",
    "modelName": "VfwVsink..base_vfw..module-0",
    "modelVersion": "1"
    "cloudConfiguration": {
    "lcpCloudRegionId": "RegionOne",
    "tenantId": "d626273afd214d0b85ba991ef7131768"
    "requestInfo": {
    "source": "VID"

    Also, We have tried to delete VF module from AAI and it shows the below error.

    Could you please share the Correct CURL queries to delete from MSO and AAI both.

    Just deleting from AAI, doesn't help! This is confirmed by running the CURL query for MSO, which shows the data of VF modules. The output of GET curl query on MSO for VF modules has been attached as a document. 

  8. Hi,

    I'm trying to understand the communication between SO and mariaDB. so I tried to retrieve some data from mariaDB and i introduced REST point to call the function(which fetches data).

    After this,I dockeriz'ed and deployed in ONAP in which the docker containers are managed by kubernetes. But when I give the REST request,it returns an internal server error:<html><head><title>Error</title></head><body>Internal Server Error</body></html>

    NOTE:Since docker and kubernetes are in different network ,I also introduced (wildcard)bind in dockerdata_nfs/../../maradb1.cnf to make communication from host.

    How do I overcome this to retrieve data from mariaDB.?

    Can someone help on these.


    ERROR [io.undertow.request] (default task-4) UT005023: Exception handling request to /ecomp/mso/infra/orchestrationRequests/<ENDPOINT>: org.jboss.resteasy.spi.UnhandledException: org.hibernate.exception.GenericJDBCException: Could not open connection
    at org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(
    at org.jboss.resteasy.core.ExceptionHandler.handleException(
    at org.jboss.resteasy.core.SynchronousDispatcher.writeException(
    .....Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/mso-requests
    at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(
    at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(
    at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(
    .....Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/mso-requests
    at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(
    .....Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/mso-requests
    at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(
    .....Caused by: javax.resource.ResourceException: IJ031084: Unable to create connection
    at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(
    .....Caused by: java.sql.SQLException: ost '' is not allowed to connect to this MariaDB server^@^@^@^@
    at org.mariadb.jdbc.internal.util.ExceptionMapper.get(


  9. hi 

    i am trying to  create vnfs using the following api

    and the json body is


    "requestDetails": {
    "modelInfo": {
    “modelType”: “vnf”,
    “modelInvariantId”: “a87b5d4c-26d0-407f-a913-c55310de658d”,
    “modelNameVersionId”: “19d82bd7-89e2-43a1-8a83-ed96ec29dfaa”,
    “modelName”: “dinesh”,
    "modelVersion": "1.0",
    “modelCustomizationName”: “dinesh 1”
    “cloudConfiguration”: {
    “lcpCloudRegionId”: “RegionOne”,
    “tenantId”: “00cbd40c51ac4f6ca9681e653ddfc3e1”
    "requestInfo": {
    “instanceName”: “instance1”,
    “productFamilyId”: “19d82bd7-89e2-43a1-8a83-ed96ec29dfaa”,
    “source”: “VID”,
    “suppressRollback”: false
    "relatedInstanceList": [
    “relatedInstance”: {
    “instanceId”: “92d3649b-a947-4dc1-ac09-dbc69aa87f7f”,
    “modelInfo”: {
    “modelType”: “service”,
    “modelInvariantId”: “a87b5d4c-26d0-407f-a913-c55310de658d”,
    “modelNameVersionId”: “19d82bd7-89e2-43a1-8a83-ed96ec29dfaa”,
    “modelName”: “dinesh”,
    "modelVersion": "1.0"
    “requestParameters”: {

    using the basic authorisation header as given in the document ,Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

    but i am getting an unauthorized error response. do i need to import any certificate to call the above api?

  10. I saw swagger annotation being used in API-Handler project. If swagger is configured,  How can i access Swagger UI for SO - API Handler ?

  11. Steve Smokowski 

    Seshu Kumar M

    Hi Steve,

    We are doing the analysis for the implementation of TMF-640 (Service Activation and configuration API)  . can you please suggest what MSO API need to be triggered for TMF-640?


    Mayank Gupta

    Anand sankaran

    1. What actions does that TMF API Target?  Does activation include creation of cloud resources?  I am not very familiar with TMF to be honest.

  12. Steve Smokowski

    Thanks for the quick response.

    I read the specification and found that for service activation and configuration it uses bellow call which needs to mapped with MSO –


      1. POST operation are used to create service


      1. Used to update service.


      1. Delete operation are used to delete service.


      1. Uniform contract operation is used to retrieve the header information that would be retrieved by GET operation without the actual data.


    I am not able to co-relate which API I suppose to map with MSO APIs for create /update /delete service.


    Although, I can see there is some implementation in NBI (northbound component) for other TMF standard (i.e. TMF0641) which also uses mso API.


    I found bellow MSO APIs in NBI :


    public static final String MSO_CREATE_SERVICE_INSTANCE_PATH = "/onap/so/infra/serviceInstantiation/v7/serviceInstances/";
    public static final String MSO_GET_REQUEST_STATUS_PATH = "/onap/so/infra/orchestrationRequests/v7/";
    public static final String MSO_DELETE_REQUEST_STATUS_PATH = "/onap/so/infra/serviceInstantiation/v7/serviceInstances/";
    public static final String MSO_CREATE_E2ESERVICE_INSTANCE_PATH = "/onap/so/infra/e2eServiceInstances/v3";
    public static final String MSO_DELETE_E2ESERVICE_INSTANCE_PATH = "/onap/so/infra/e2eServiceInstances/v3/";
    public static final String MSO_GET_E2EREQUEST_STATUS_PATH = "/onap/so/infra/e2eServiceInstances/v3/$serviceId/operations/$operationId";


    we have E2E API as well as service Instance API.


    Question is what API we should use ?

    What is this E2E service API used for?

  13. Can someone please suggest what SO API to use for deleting VNFs  ?  Deleting using VID GUI does not work in Dublin VID-503 so either it works somehow for everyone else and I am doing something really wrong or nobody care about cleaning VNF's and usually redeploy stack differently ...

    that 30223 port is not exposed in Dublin and I was told that I can use 

    POST /serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules

    instead but some more details will be extremely helpful as I don't know where to send this POST to ....