Service Connection Creation (10GbE Ethernet)

Overview

Here described is an example of Creating 10GbE Service connection between OCS and PHN NEs.

Service Creation example (10GbE)

In the figure shown below,there are two NEs used which are named as CLOUDE_2 (PSS_32) and CLOUDE_3 (Compound Node - PHN + OCS). 10GbE service connection will be created between CLOUDE_2/130SNX10-1-11-C3 to CLOUDE_3/MDL-1-1-16-3.

OTS Connection Creation

The input provided to REST client is in json format by means of a json file - serviceCreateInfo.json. Minimum information required to create connection would be specified in this file. For example A and Z node names, Port Names, Service connection name, Customer name, Template Name and connection type etc.

serviceCreateInfo.json content - :


{ 
 "connectionName":"SERVICE-3",
 "customerName":"Nokia1",
  "fromNodeName":"PSS32_3",
 "fromPortName":"130SNX10-1-11-C3",
 "fromPortType":"Terminated",
  "toNodeName":"PSS32_1",
 "toPortName":"MDL-1-1-16-3",
 "toPortType":"Terminated",
 "toPortPluggableModule":"SR111G1AU",
  "templatePath":"/Best Practices/Service/Ethernet/Unprotected/Full Rate",
 "templateName":"10G Ethernet",
  "serviceRate":"",
 "container":"",
 "protectionType":"",
 "connectionType":""
}

Creating Request

Converting JSON Input file to JSON Object

Convert input JSON file serviceCreateInfo.json into serviceCreateInfo object.


/** Convert JSON string from input file to serviceCreateInfo Object **/
CreateConnectionInfo connCrInfo = super.readJSON(new File (jsonFilePath), CreateConnectionInfo.class);

readJSON() method defined in super class Service uses jackson.databind.ObjectMapper to conver the JSON string into an object.

Retreiving Service Template using template Path and Name

This part of code retrieves 10GeB Ethernet Template and builds map of "groupName" to params list for later usage. Please check below for the Template request and response sample data.

Below are the REST calls used to retrieve required template.

1. /data/otn/connectionTemplates/folders to retrieve the template folders

2. /data/otn/connectionTemplates/templates/{templateId} to retrieve template details


/**Retrieve service template from template path and name*/
 JsonNode connTemplate = getTemplateByPathAndName(restTemplate, connCrInfo.getTemplatePath(), connCrInfo.getTemplateName());

 /***fetch all the parameters list from template*/
 Map <String, JsonNode> paramsList = fetchParamListFromTemplateByGroupName (connTemplate);
 
/**Retrieves Template By path and Name*/
public JsonNode getTemplateByPathAndName (OMSRestTemplate restTemplate, String templatePath, String name) {
	/**Rest URL to retrieve all the template folders*/
	String getTemplateFolders = restTemplate.getUrlPrefix() + "/data/otn/connectionTemplates/folders";

	/**Retrieve all the folders*/
	String templatefolders = restTemplate.getForObject(getTemplateFolders, String.class);

	/**convert received JSON string to JsonNode*/
	JsonNode jsonNode = createJsonNodeFromString(templatefolders);

	/**iterate over all the folders and find the matching folder by templatePath and name*/
	Iterator <JsonNode> it = jsonNode.iterator();
	JsonNode folderNode = null;
	while (it.hasNext()) {
		JsonNode node = it.next();
		String path = node.get("path").asText();
		String tName = node.get("name").asText();
		if ( path.equals(templatePath) && tName.equals(name) ) {
			/**required template folder is matched*/
			folderNode = node;
			break;
		}
	}

	JsonNode templateDetailNode = null;

	/**got required template folder. Now retrieve complete template details using templateid */
	if (folderNode != null) {
		/**Rest URL to retrieve required template details*/
		String getTemplateDetailUrl = restTemplate.getUrlPrefix() + "/data/otn/connectionTemplates/templates/" + folderNode.get("templateId");
 
		/**Retrieve template details*/
		String templateDetail = restTemplate.getForObject(getTemplateDetailUrl, String.class);

		/**convert json response string to JsonNode object*/	
		templateDetailNode = super.createJsonNodeFromString(templateDetail);
	}

	return templateDetailNode;
}


/***/
public Map <String, JsonNode> fetchParamListFromTemplateByGroupName (JsonNode templateNode) {
	Map <String, JsonNode> groupNameToParamList = new HashMap <String, JsonNode> ();
	JsonNode groups = templateNode.get("data").get("groups");
	Iterator <JsonNode> grpIter = groups.iterator();
	while ( grpIter.hasNext() ) {
		JsonNode grpItem = grpIter.next();
		if ( grpItem.get("groupname").asText().equalsIgnoreCase("ASONParams") ) {
			groupNameToParamList.put("ASONParams", grpItem.get("paramList"));
		} else if ( grpItem.get("groupname").asText().equalsIgnoreCase("protectionParams") ) {
			groupNameToParamList.put("protectionParams", grpItem.get("paramList"));
		} else if ( grpItem.get("groupname").asText().equalsIgnoreCase("assuranceParams") ) {
			groupNameToParamList.put("assuranceParams", grpItem.get("paramList"));
		} else if ( grpItem.get("groupname").asText().equalsIgnoreCase("odukParams") ) {
			groupNameToParamList.put("odukParams", grpItem.get("paramList"));
		}else if ( grpItem.get("groupname").asText().equalsIgnoreCase("connectionParams") ) {
			groupNameToParamList.put("connectionParams", grpItem.get("paramList"));
		}
	}
	JsonNode info = templateNode.get("info");
	groupNameToParamList.put("info", info);

	return groupNameToParamList;
}
Populating request object with ASON, protection, assurance, odukparams and connections parameters from template

/**populate ASON, protection, assurance, odukparams and connections parameters parameters in create Connection request*/
 populateASONParams (connectionrequest, paramsList.get("ASONParams"));
 populateProtectionParams (connectionrequest, paramsList.get("protectionParams"));
 populateAssuranceParams (connectionrequest, paramsList.get("assuranceParams"));
 populateOdukParams (connectionrequest, paramsList.get("odukParams"));
 populateConnectionParams (connectionrequest, paramsList.get("connectionParams"));

readJSON() method defined in super class Service uses jackson.databind.ObjectMapper to conver the JSON string into an object.

As of now separate methods are written to populate each group of parameters. Need to check if it is possible to directly feed the JSON string to request object..


/***
*
* "serviceratetype": "Ethernet",
"servicerate": "10GbE",
"signalType": "10GbE",
"connshape": "8",
"fecMode": "N/A",
"wavekeyConfig": "N/A",
*
*
* */

private void populateConnectionParams(OtnConnectionRequest connectionrequest, JsonNode connectionParams) {
	Iterator<JsonNode> it = connectionParams.iterator();
	while (it.hasNext()) {
		JsonNode n = it.next();
		if ( n.get("name").asText().equals("serviceratetype") ) {
			connectionrequest.setServiceratetype(n.get("value").asText());
		} else if ( n.get("name").asText().equals("servicerate") ) {
			connectionrequest.setServicerate(n.get("value").asText());
		} else if ( n.get("name").asText().equals("signalType") ) {
			connectionrequest.setSignalType(n.get("value").asText()); 
		} else if ( n.get("name").asText().equals("connshape") ) {
			connectionrequest.setConnshape(n.get("value").asText()); 
		} else if ( n.get("name").asText().equals("fecMode") ) {
			connectionrequest.setFec(n.get("value").asText()); 
		} else if ( n.get("name").asText().equals("wavekeyConfig") ) {
			connectionrequest.setWavekeyConfig(n.get("value").asText()); 
		} 
	}
}
 

/**
*
* "containerrate": "ODU2e",
"LOSPropagation": "BothAZ",
"xmnActualBitRate": "Default",
*
* */
private void populateOdukParams(OtnConnectionRequest connectionrequest, JsonNode odukPrams) {
	Iterator<JsonNode> it = odukPrams.iterator();
	while (it.hasNext()) {
		JsonNode n = it.next();
		if ( n.get("name").asText().equals("containerrate") ) {
			connectionrequest.setContainerrate(n.get("value").asText());
		} else if ( n.get("name").asText().equals("LOSPropagation") ) {
			connectionrequest.setLOSPropagation(n.get("value").asText());
		} else if ( n.get("name").asText().equals("xmnActualBitRate") ) {
			connectionrequest.setXmnActualBitRate(n.get("value").asText()); 
		} 
	}
}


/**
*
* "alarmEnable": "NOTSET",
"autoInService": "Disable",
"AutoInServiceTimer": "Default",
"pm15min": "false",
"pm24hr": "true",
 * */
private void populateAssuranceParams(OtnConnectionRequest connectionrequest, JsonNode assuranceParams) {
	Iterator<JsonNode> it = assuranceParams.iterator();
	while (it.hasNext()) {
		JsonNode n = it.next();
		if ( n.get("name").asText().equals("alarmEnable") ) {
			connectionrequest.setAlarmEnable(n.get("value").asText());
		} else if ( n.get("name").asText().equals("autoInService") ) {
			//connectionrequest.setAutoInService(n.get("value").asText());
			connectionrequest.setAutoInService("Disable");
		} else if ( n.get("name").asText().equals("AutoInServiceTimer") ) {
			//connectionrequest.setAutoInServiceTimer(n.get("value").asText()); 
		} else if ( n.get("name").asText().equals("pm15min") ) {
			connectionrequest.setPm15min(n.get("value").asText()); 
		} else if ( n.get("name").asText().equals("pm24hr") ) {
			connectionrequest.setPm24hr(n.get("value").asText()); 
		}
	}
}


/**
* populate protectionParams in connectionrequest
"protectiontype": "9",
"networkProtectionMode": "0",
"clientprotectiontype": "0",
"switchType": "0",
"revertive": "2",
"reversionTimer": "N/A", 
*
* */
private void populateProtectionParams(OtnConnectionRequest connectionrequest, JsonNode protectionParams) {
	Iterator<JsonNode> it = protectionParams.iterator();
	while (it.hasNext()) {
		JsonNode n = it.next();
		if ( n.get("name").asText().equals("protectiontype") ) {
			connectionrequest.setProtectiontype(n.get("value").asText());
		}/* else if ( n.get("name").asText().equals("networkProtectionMode") ) {
			connectionrequest.setNwkprotectedMethod(n.get("value").asText());
		}*/ else if ( n.get("name").asText().equals("clientprotectiontype") ) {
			connectionrequest.setClientprotectiontype(n.get("value").asText());
		} /*else if ( n.get("name").asText().equals("switchType") ) {
			connectionrequest.setEncryptionSwitchOverToNextKey(s);(n.get("value").asText());
			//connectionrequest.setWaitForServerRestoration(n.get("value").asText());
		}*/ 
	}
}


/** 
* populate below ASONParams in connection request.
"ASONRouted": "false",
"preferredRestorationMode": "norestore",
"reversionMode": "manual",
"waitForServerRestoration": "false",
*/
private void populateASONParams(OtnConnectionRequest connectionrequest, JsonNode asonParamList) {
	Iterator<JsonNode> it = asonParamList.iterator();
	while (it.hasNext()) {
		JsonNode n = it.next();
		if ( n.get("name").asText().equals("ASONRouted") ) {
			connectionrequest.setASONRouted(n.get("value").asText());
		} else if ( n.get("name").asText().equals("preferredRestorationMode") ) {
			connectionrequest.setPreferredRestorationMode(n.get("value").asText());
		} else if ( n.get("name").asText().equals("reversionMode") ) {
			connectionrequest.setReversionMode("manual");
			if (!n.get("value").asText().equalsIgnoreCase("ReversionMode_NA")) connectionrequest.setReversionMode(n.get("value").asText());
		} else if ( n.get("name").asText().equals("waitForServerRestoration") ) {
			connectionrequest.setWaitForServerRestoration ("false");
			//connectionrequest.setWaitForServerRestoration(n.get("value").asText());
		} 
	} 
}
Retrieve A and Z nodes details using name and populate in Request Object

Retrieving A and Z node details using nodes name provided as input.


/**Retrieve a node details*/
 String queryString = "select(guiLabel,id,productName,className)&productName!='External%20Network'&guiLabel=" + connCrInfo.getFromNodeName();
 JsonNode aNodeDetails = ServiceUtil.retreiveNodeDetails(restTemplate, queryString);
connectionrequest.setFromne1(aNodeDetails.get(0).get("guiLabel").asText()); 

/**Retrieve z node details*/
queryString = "select(guiLabel,id,productName,className)&productName!='External%20Network'&guiLabel=" + connCrInfo.getToNodeName();
JsonNode zNodeDetails = ServiceUtil.retreiveNodeDetails(restTemplate, queryString);
connectionrequest.setTone1(zNodeDetails.get(0).get("guiLabel").asText());

Method "retreiveNodeDetails" is defined in ServiceUtil class. It uses RestTemplate's getForObject method to make HTTP GET call.

GET REST call used here is /data/npr/{table}

queryString is basically db query passed as a part GET request.


/**Retrieves node details using filter provided in the query string*/
public static JsonNode retreiveNodeDetails (OMSRestTemplate restTemplate, String queryString) {
	String retrieveNodeDetailsUrl = restTemplate.getUrlPrefix() + "/data/npr/Node?" + queryString;//select(guiLabel,id,productName,emlNeType)&productName!='External%20Network'&guiLabel=" + nodGuiLabel;

	return restTemplate.getForObject(retrieveNodeDetailsUrl, JsonNode.class);
}
Retrieve A and Z ports details using name and populate in Request Object

Retrieving A and Z ports details using port name provided as input.


/**Retrieve a port details*/
//"nodeName=PSS32_1&popupFormFieldId=fromport1&showallports=no&rate=10GbE&nodeId=94&objectType=Ethernet"
queryString = "showallports=no&rate=" + connectionrequest.getServicerate() + "&nodeId=" + aNodeDetails.get(0).get("id").asText() + "&objectType=" + connectionrequest.getServiceratetype();
JsonNode aPortDetails = ServiceUtil.retreivePortDetailsForService (restTemplate, queryString, connCrInfo.getFromPortName());
populateFromPortDetails (connectionrequest, aPortDetails);

/**Retrieve z port details*/
queryString = "showallports=no&rate=" + connectionrequest.getServicerate() + "&nodeId=" + zNodeDetails.get(0).get("id").asText() + "&objectType=" + connectionrequest.getServiceratetype();
JsonNode zPortDetails = ServiceUtil.retreivePortDetailsForService (restTemplate, queryString, connCrInfo.getToPortName());
populateToPortDetails (connectionrequest, zPortDetails);

method "retreivePortDetailsForService" is defined in ServiceUtil class. It uses RestTemplate's getForObject method to make HTTP GET call.


/*Request GET /oms1350/data/otn/connectionTP?nodeName=PSS32_1&popupFormFieldId=fromport1&showallports=no&rate=10GbE&nodeId=94&objectType=Ethernet*/
public static JsonNode retreivePortDetailsForService (OMSRestTemplate restTemplate, String queryString, String portName) { 
	JsonNode portDetail = null;
	String retrieveNodeDetailsUrl = restTemplate.getUrlPrefix() + "/data/otn/connectionTP?" + 
	queryString;//guiLabel='" + portName;// + "'&ne.associatedNodeId=" + nodeId;
	JsonNode portsList = restTemplate.getForObject(retrieveNodeDetailsUrl, JsonNode.class);

	System.out.println(portName);;
	if ( portsList.get("items") != null ) {
		Iterator <JsonNode> it = portsList.get("items").iterator();
		while ( it.hasNext() ) {
			JsonNode n = it.next();
			System.out.println("n = " + n);
			if (n.get("portName").asText().equals(portName)) {
				portDetail = n;
				break;
			}
		}
	}
	return portDetail;
}

GET REST call used here is /data/otn/connectionTP

queryString is basically db query passed as a part GET request.


/**Retrieves node details using filter provided in the query string*/
public static JsonNode retreiveNodeDetails (OMSRestTemplate restTemplate, String queryString) {
	String retrieveNodeDetailsUrl = restTemplate.getUrlPrefix() + "/data/npr/Node?" + 
	queryString;//select(guiLabel,id,productName,emlNeType)&productName!='External%20Network'&guiLabel=" + nodGuiLabel;

	return restTemplate.getForObject(retrieveNodeDetailsUrl, JsonNode.class);
}
Populating Request Object with default values for non applicable attributes

Below attributes related Y cable etc may not be applicable for service, but they should be set with default values.


/***/
connectionrequest.setConnectionname(connCrInfo.getConnectionName());
connectionrequest.setCustomerName(connCrInfo.getCustomerName());
//connectionrequest.setToPort1XFP(connCrInfo.getToPortPluggableModule());
connectionrequest.setPayloadType("UseNEValue");

/**to be checked later**/
connectionrequest.setLopc("false");
connectionrequest.setOrderstep("9");
connectionrequest.setOrdersensitive("false");
connectionrequest.setRearrange("soft");
connectionrequest.setReinstate("none");
connectionrequest.setTcmLevel("notcm");
connectionrequest.setPmdata15("0");
connectionrequest.setDirection15("0");
connectionrequest.setReportinfo15("1");
connectionrequest.setTpmonitor15("2");
connectionrequest.setPmdata24("0");
connectionrequest.setDirection24("0");
connectionrequest.setReportinfo24("0");
connectionrequest.setTpmonitor24("2");
connectionrequest.setOdukTraceMismatchDectMode("UseNevalue");
connectionrequest.setOdukTraceMismatchAction("UseNEValue");
connectionrequest.setPayloadTypeMismatchResponse("UseNEValue");
connectionrequest.setProvisionedBitRateDsr("UseNEValue");
connectionrequest.setProvisionedBitRate("UseNEValue");
connectionrequest.setFecEnable("UseNEValue");
connectionrequest.setAsymInterwk("UseNevalue");
connectionrequest.setOdu4InterworkingMode("UseNEValue");
connectionrequest.setMappingMode("UseNevalue");
connectionrequest.setEncapsulationMode("UseNEValue");
connectionrequest.setApsEnable("UseNEValue");
connectionrequest.setSsmSupport("UseNEValue");
connectionrequest.setOutQl("UseNEValue");
connectionrequest.setClientholdofftime("0");
connectionrequest.setClientprotectedMethod("0");
connectionrequest.setClientprotectingMethod("0");
connectionrequest.setClientsignaldegrade("0");
connectionrequest.setClientwaittime("5");
connectionrequest.setClientrevertivemod("1");
connectionrequest.setNwkprotectiontype("0");
connectionrequest.setNwkholdofftime("0");
connectionrequest.setNwkprotectedMethod("0");
connectionrequest.setNwkprotectingMethod("0");
connectionrequest.setNwksignaldegrade("0");
connectionrequest.setNwkwaittime("5");
connectionrequest.setNwkrevertivemode("1");
connectionrequest.setRouting("1");
connectionrequest.setTrailrate("ODU0");
connectionrequest.setEirrate("0");
connectionrequest.setCirrate("0");
connectionrequest.setRoutedisplay("true");
 

/*************************************************/
connectionrequest.setCbs("CBS16");
connectionrequest.setEbs("CBS16");
connectionrequest.setFec("UseNEValue");
connectionrequest.setMRNTunnel("false");
connectionrequest.setASONConnectionType("TermTunnel");
connectionrequest.setAendworkport("porta");
connectionrequest.setFromPort1XFP("");
connectionrequest.setFromPort2XFP("");
connectionrequest.setToPort2XFP("");


/*************************************************/
connectionrequest.setClientSel("GBE10ODU2E");
connectionrequest.setZ1ClientSel("GBE10ODU2E");
connectionrequest.setEncryptionState("UseNEValue");
connectionrequest.setEncryptionSwitchOverToNextKey("UseNEValue");
connectionrequest.setDefalutsetuppriority("5");
connectionrequest.setDefalutpriority("4");
connectionrequest.setAsonsubntwrkprotectiontype("SNCP");
connectionrequest.setRoutingeffort("2");
connectionrequest.setRoutefrequency("");
connectionrequest.setRoutingtable(new ArrayList <OtnRoutingConstraints>());
connectionrequest.setWavekeyassignment("system");
connectionrequest.setZawavekeyrekey("NORekey");
connectionrequest.setAzwavekeyrekey("NORekey");
connectionrequest.setHassdx("no");
connectionrequest.setAllowUncommissioned("true");
connectionrequest.setProvisionwavekey("keyed");
connectionrequest.setOperation("create");
connectionrequest.setFromaside("working");
connectionrequest.setFrombside("Protection");
connectionrequest.setToaside("working");
connectionrequest.setTobside("Protection");
connectionrequest.setHasycable("no");
connectionrequest.setYcablefromne(connectionrequest.getFromne1());
connectionrequest.setYcabletone(connectionrequest.getTone1());
connectionrequest.setYcablerevertivemode("Disabled");
connectionrequest.setYcablerestoretime("5");
connectionrequest.setYcabletimeslot("1");
connectionrequest.setHasycable1("no");
connectionrequest.setYcableswitchmode("uni");
connectionrequest.setWavekeytype("auto");
connectionrequest.setAzwavekeypref("none");
connectionrequest.setZawavekeypref("none");
Retrieving and populating Tx parameters

/**
* retrieve transmission parameters and populate in Request Object
* */
retrieveAndPopulateTransmissionParams (restTemplate, connectionrequest);
connectionrequest.setToPort1XFP(connCrInfo.getToPortPluggableModule());

The same connection provisioning request would be used to retrieve transmission parameters. The REST Call used to retrieve transmission parameter is /data/otn/Connection/Params


private void retrieveAndPopulateTransmissionParams(OMSRestTemplate restTemplate, OtnConnectionRequest connectionrequest) {
// https://135.250.76.157:8443/oms1350/data/otn/Connection/Params/
String txDataUrl = restTemplate.getUrlPrefix() + "/data/otn/Connection/Params";
JsonNode txData = restTemplate.postForObject(txDataUrl, connectionrequest, JsonNode.class);
 

/***populate hasOPSB, hasycable etc from group*/
Iterator <JsonNode> groupIt = txData.get("groups").iterator();
while ( groupIt.hasNext() ) {
	JsonNode n = groupIt.next();
	if ( n.get("groupname").asText().equals("HasOPSB") ) { 
		connectionrequest.setHasopsb(n.get("paramList").get(0).get("value").asText());
	} else if ( n.get("groupname").asText().equals("HasYcable") ) {
		connectionrequest.setHasycable(n.get("paramList").get(0).get("value").asText());
	}
}


/**---populate transimmsion parameters -----*/
JsonNode txNode = txData.get("txParamTableData");
Iterator <JsonNode> txIt = txNode.iterator();
List<OtnConnTxParams> txParamData = new ArrayList<OtnConnTxParams>();
while ( txIt.hasNext() ) {
	JsonNode n = txIt.next();
	OtnConnTxParams txP = convertJsonNodeToPojoObject(n, OtnConnTxParams.class);
	if (txP != null) {txParamData.add(txP);}
} 
connectionrequest.setTxParamData(txParamData);
System.out.println("txData=======" + txData); 
}

Making HTTP Request

Making HTTP POST request /data/otn/Connection to create 10GbeE ethernet service connection.


connectionrequest.setRequestId(requestId);
connectionrequest.setEventChannel("/oms1350/events/otn/prov/jobEvent/" + requestId);
String connCreatUrl = restTemplate.getUrlPrefix() + "/data/otn/Connection";
JsonNode resp = restTemplate.postForObject(connCreatUrl, connectionrequest, JsonNode.class);

Complete Code

Main class - OmsRestClientApplication.java


package com.nokia.oms.restclient;
import com.fasterxml.jackson.databind.JsonNode;
import com.nokia.oms.restclient.models.AuthInfo;
import com.nokia.oms.restclient.services.BulkUplaodService;
import com.nokia.oms.restclient.services.ConnectionService;
import com.nokia.oms.restclient.services.CustomerService;
import com.nokia.oms.restclient.services.ERPServices;
import com.nokia.oms.restclient.services.PysicalConnectionService;

public class OmsRestClientApplication {
	public static void main(String[] args) {

	/**Authentication Information like Machine IP, username and password*/
	AuthInfo authInfo = new AuthInfo();  
	authInfo.setServerIP("135.250.76.157");
	authInfo.setServerPort("8443");
	authInfo.setServerUser("alcatel");
	authInfo.setServerPwd("Lucent1.!");
	authInfo.setPresentationIP("135.250.76.46");
  
/*  //AuthInfo authInfo = new AuthInfo();  
	authInfo.setServerIP("135.250.203.13");
	authInfo.setServerPort("8443");
	authInfo.setServerUser("alcatel");
	authInfo.setServerPwd("Lucent1.!");
	authInfo.setPresentationIP("135.250.203.15");*/
  
/*  authInfo.setServerIP("135.250.184.42");
	authInfo.setServerPort("8443");
	authInfo.setServerUser("alcatel");
	authInfo.setServerPwd("Lucent1.!");
	authInfo.setPresentationIP("135.250.184.43");*/
  
	/**create OMSRestTemplate instance**/
	OMSRestTemplate omsRestTemplate = new OMSRestTemplate ();
  
	/**authenticate*/
	omsRestTemplate.authenticate(authInfo);
	ConnectionService connService = new ConnectionService ();
	connService.createNetworkConnection(omsRestTemplate, "C:\\REST-CLIENT-INPUT\\serviceCreateInfo.json");
    
	/*PysicalConnectionService physConnSvc = new PysicalConnectionService();
	physConnSvc.createPhysicalConnection (omsRestTemplate,  "C:\\REST-CLIENT-INPUT\\CreatePhyConInfo.json");
	*/
  
	/**Instantiate physical connection service instance*/
	PysicalConnectionService physConnSvc = new PysicalConnectionService();
  
	/**invoke creation create*/
	physConnSvc.createPhysicalConnection (omsRestTemplate,  "C:\\REST-CLIENT-INPUT\\CreatePhyConInfo.json");
	CustomerService custSvc = new CustomerService ();
	///String resp = custSvc.createCustomer(omsRestTemplate, "C:\\CustomerInfo.json");
	//System.out.println("CustCreateResp " + resp);
	String resp = custSvc.getAllCustomers(omsRestTemplate);
	System.out.println(resp);
	//System.out.println(omsRestTemplate.getForObject(omsRestTemplate.getUrlPrefix() + "/data/otn/connection/Params", JsonNode.class));
	/* 
	BulkUplaodService bSvc = new BulkUplaodService ();
	//bSvc.uploadNetworkElements(omsRestTemplate);
	System.out.println(bSvc.getAllNetworkElements(omsRestTemplate));
	System.out.println(bSvc.getAllEquipments(omsRestTemplate));
	System.out.println(bSvc.getAllTopologicalLinks(omsRestTemplate));
	System.out.println(bSvc.getAllConnections(omsRestTemplate));*/
	/* 
	ERPServices erpSvc = new ERPServices ();
	//erpSvc.createERP(omsRestTemplate, "C:\\REST-CLIENT-INPUT\\CreateERPInfo.json");
  
	*/
	/*PysicalConnectionService physConnSvc = new PysicalConnectionService();
	physConnSvc.createPhysicalConnection (omsRestTemplate,  "C:\\REST-CLIENT-INPUT\\CreatePhyConInfo.json");
	*/
  
	/* ConnectionService connService = new ConnectionService ();
	connService.createNetworkConnection(omsRestTemplate, "C:\\REST-CLIENT-INPUT\\serviceCreateInfo.json");*/
	/*String resp = connService.deleteConnection(omsRestTemplate, "SERVICE-2");
	System.out.println(resp);
    */
	//JsonNode resp = connService.getTemplateByPathAndName(omsRestTemplate, "/Best Practices/Service/Ethernet/Unprotected/Full Rate", "10G Ethernet");
  
	//System.out.println(resp);
	}
}

connection creation service class - ConnectionService.java


public class ConnectionService extends Service{
	public void createNetworkConnection (OMSRestTemplate restTemplate, String jsonFilePath) {
		/**connection creation request to be sent*/
		OtnConnectionRequest connectionrequest = new OtnConnectionRequest();

		/** Convert JSON string from input file to serviceCreateInfo Object **/
		CreateConnectionInfo connCrInfo = super.readJSON(new File (jsonFilePath), CreateConnectionInfo.class);

		/**Retrieve service template from template path and name*/
		JsonNode connTemplate = getTemplateByPathAndName(restTemplate, connCrInfo.getTemplatePath(), connCrInfo.getTemplateName());

		/***fetch all the parameters list from template*/
		Map <String, JsonNode> paramsList = fetchParamListFromTemplateByGroupName (connTemplate);
		System.out.println("paramsList - " + paramsList );

		/**populate ASON, protection, assurance, odukparams and connections parameters parameters in create Connection request*/
		populateASONParams (connectionrequest, paramsList.get("ASONParams"));
		populateProtectionParams (connectionrequest, paramsList.get("protectionParams"));
		populateAssuranceParams (connectionrequest, paramsList.get("assuranceParams"));
		populateOdukParams (connectionrequest, paramsList.get("odukParams"));
		populateConnectionParams (connectionrequest, paramsList.get("connectionParams"));

		/**Retrieve a node details*/
		String queryString = "select(guiLabel,id,productName,className)&productName!='External%20Network'&guiLabel=" + connCrInfo.getFromNodeName();
		JsonNode aNodeDetails = ServiceUtil.retreiveNodeDetails(restTemplate, queryString);
		connectionrequest.setFromne1(aNodeDetails.get(0).get("guiLabel").asText()); 

		/**Retrieve z node details*/
		queryString = "select(guiLabel,id,productName,className)&productName!='External%20Network'&guiLabel=" + connCrInfo.getToNodeName();
		JsonNode zNodeDetails = ServiceUtil.retreiveNodeDetails(restTemplate, queryString);
		connectionrequest.setTone1(zNodeDetails.get(0).get("guiLabel").asText()); 

		/**Retrieve a port details*/
		//"nodeName=PSS32_1&popupFormFieldId=fromport1&showallports=no&rate=10GbE&nodeId=94&objectType=Ethernet"
		queryString = "showallports=no&rate=" + connectionrequest.getServicerate() + "&nodeId=" + aNodeDetails.get(0).get("id").asText() + "&objectType=" + connectionrequest.getServiceratetype();
		JsonNode aPortDetails = ServiceUtil.retreivePortDetailsForService (restTemplate, queryString, connCrInfo.getFromPortName());
		populateFromPortDetails (connectionrequest, aPortDetails);

		/**Retrieve z port details*/
		queryString = "showallports=no&rate=" + connectionrequest.getServicerate() + "&nodeId=" + zNodeDetails.get(0).get("id").asText() + "&objectType=" + connectionrequest.getServiceratetype();
		JsonNode zPortDetails = ServiceUtil.retreivePortDetailsForService (restTemplate, queryString, connCrInfo.getToPortName());
		populateToPortDetails (connectionrequest, zPortDetails);
		................... 

		/**
		* retrieve transmission parameters and populate in Request Object
		* */
		retrieveAndPopulateTransmissionParams (restTemplate, connectionrequest);
		connectionrequest.setToPort1XFP(connCrInfo.getToPortPluggableModule());
		System.out.println("aNodeDetails " + aNodeDetails);
		System.out.println("zNodeDetails" + zNodeDetails);
		System.out.println("aPortDetails" + aPortDetails);
		System.out.println("zPortDetails" + zPortDetails);
		Random r = new Random ();
		Long requestId = (long) 989898;

		try {
			System.out.println ("Json String of connection request - " + mapper.writeValueAsString(connectionrequest));
		} catch (JsonProcessingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		connectionrequest.setRequestId(requestId);
		connectionrequest.setEventChannel("/oms1350/events/otn/prov/jobEvent/" + requestId);
		String connCreatUrl = restTemplate.getUrlPrefix() + "/data/otn/Connection";
		JsonNode resp = restTemplate.postForObject(connCreatUrl, connectionrequest, JsonNode.class);

		//System.out.println("paramList - " + fetchParamListByGroupName (connTemplate, "ASONParams"));
}

Request and Response Data

JSON Request payload


{
	"requestId": 289702,
	"eventServerUrl": null,
	"eventChannel": "/oms1350/events/otn/prov/jobEvent/289702",
	"connshape": "8",
	"customerName": "Nokia1",
	"connectionname": "SERVICE-2",
	"connectionalias": null,
	"serviceratetype": "Ethernet",
	"servicerate": "10GbE",
	"trailrate": "ODU0",
	"cirrate": "0",
	"eirrate": "0",
	"cbs": "CBS16",
	"ebs": "CBS16",
	"cevlan": null,
	"svlan": null,
	"protectiontype": "9",
	"fec": "UseNEValue",
	"lopc": "false",
	"ASONRouted": "false",
	"restoration": null,
	"MRNTunnel": "false",
	"ASONConnectionType": "TermTunnel",
	"aendworkport": "porta",
	"fromne1": "CLOUD_2",
	"fromport1": "130SNX10-1-11-C3",
	"fromne2": null,
	"fromport2": null,
	"tone1": "CLOUD_3",
	"toport1": "MDL-1-1-16-3",
	"tone2": null,
	"toport2": null,
	"fromPort1XFP": "",
	"fromPort2XFP": "",
	"toPort1XFP": "SR111G1AU",
	"toPort2XFP": "",
	"fromport1_AdditionalInfo": {
		"className": null,
		"label": "130SNX10-1-11-C3",
		"guiLabel": null,
		"key": null,
		"id": 0,
		"neId": 111,
		"neName": "CLOUD_2",
		"neLabel": null,
		"neModel": null,
		"nodeName": null,
		"portid": 8762,
		"portName": "130SNX10-1-11-C3",
		"rate": null,
		"type": null,
		"cardName": "130SNX10",
		"availability": null,
		"frequency": null,
		"rxFrequency": null,
		"oprMode": null,
		"layerRate": 0,
		"direction": 0,
		"timeslot": 0,
		"alarmState": 0,
		"ptpId": 0,
		"ptpName": null,
		"ptpRate": null,
		"connectionId": 0,
		"connectionName": null,
		"connectionRate": null,
		"port": null,
		"portGrpMode": "N/A",
		"odukPort": null,
		"portId": 8762,
		"oduKPort": null
	},
	"fromport2_AdditionalInfo": null,
	"toport1_AdditionalInfo": {
		"className": null,
		"label": "MDL-1-1-16-3",
		"guiLabel": null,
		"key": null,
		"id": 0,
		"neId": 113,
		"neName": "CLOUD_3#OCS",
		"neLabel": null,
		"neModel": null,
		"nodeName": null,
		"portid": 10180,
		"portName": "MDL-1-1-16-3",
		"rate": null,
		"type": null,
		"cardName": "10XANY10G",
		"availability": null,
		"frequency": null,
		"rxFrequency": null,
		"oprMode": null,
		"layerRate": 0,
		"direction": 0,
		"timeslot": 0,
		"alarmState": 0,
		"ptpId": 0,
		"ptpName": null,
		"ptpRate": null,
		"connectionId": 0,
		"connectionName": null,
		"connectionRate": null,
		"port": null,
		"portGrpMode": "ETHSTH_OTH",
		"odukPort": null,
		"portId": 10180,
		"oduKPort": null
	},
	"toport2_AdditionalInfo": null,
	"port1timeslot": null,
	"port2timeslot": null,
	"port3timeslot": null,
	"port4timeslot": null,
	"routing": "1",
	"orderstep": "9",
	"routedisplay": "true",
	"containerrate": "ODU2e",
	"signalType": "10GbE",
	"clientSel": "GBE10ODU2E",
	"a1ClientSel": null,
	"z1ClientSel": "GBE10ODU2E",
	"a2ClientSel": null,
	"z2ClientSel": null,
	"LOSPropagation": "BothAZ",
	"xmnActualBitRate": "Default",
	"odukAZSrcTrace": null,
	"odukZASrcTrace": null,
	"odukTraceMismatchDectMode": "UseNevalue",
	"odukTraceMismatchAction": "UseNevalue",
	"xmnAZClientClassificationMode": null,
	"xmnZAClientClassificationMode": null,
	"ProvisionedBitRate": "UseNEValue",
	"ProvisionedBitRateDsr": "UseNEValue",
	"fecEnable": "UseNEValue",
	"asymInterwk": "UseNEValue",
	"Odu4InterworkingMode": "UseNEValue",
	"encryptionState": "UseNEValue",
	"encryptionNextKey": null,
	"encryptionWKAT": null,
	"encryptionSwitchOverToNextKey": "UseNEValue",
	"payloadType": "UseNEValue",
	"PayloadTypeMismatchResponse": "UseNEValue",
	"mappingmode": "UseNEValue",
	"EncapsulationMode": "UseNEValue",
	"apsEnable": "UseNEValue",
	"ssmSupport": "UseNEValue",
	"outQl": "UseNEValue",
	"timeSlotL1": null,
	"txParamData": [
		{
		  "parameter": "AEndNegotn",
		  "name": "AEndnegotn",
		  "value": null,
		  "currentValue": "Use NE Value",
		  "discA": null,
		  "discZ": null,
		  "type": "Enumeration",
		  "editorArgs": {
				"options": [
					"Use NE Value",
					"Enable",
					"Disable"
				],
				"maxlength": 0
			},
			"disabled": false
		},
		{
			"parameter": "ZEndNegotn",
			"name": "ZEndnegotn",
			"value": null,
			"currentValue": "Use NE Value",
			"discA": null,
			"discZ": null,
			"type": "Enumeration",
			"editorArgs": {
			"options": [
				"Use NE Value",
				"Enable",
				"Disable"
			],
			"maxlength": 0
		},
		"disabled": false
	},
	{
		"parameter": "ErroredFrameDrop",
		"name": "ErroredFrameDropMode",
		"value": null,
		"currentValue": "Use NE Value",
		"discA": null,
		"discZ": null,
		"type": "Enumeration",
		"editorArgs": {
			"options": [
				"Use NE Value",
				"Enable",
				"Disable"
			],
			"maxlength": 0
		},
		 "disabled": false
	},
	{
		"parameter": "EncapsulationMode",
		"name": "EncapsulationMode",
		"value": null,
		"currentValue": "Use NE Value",
		"discA": null,
		"discZ": null,
		"type": "Enumeration",
		"editorArgs": {
			"options": [
				"Use NE Value",
				"CBRLAN11.049",
				"CBRLAN11.096",
				"GFP-F",
				"GFP-P"
			],
			"maxlength": 0
		},
		"disabled": false
	},
	{
		"parameter": "ODUkSourceAZTTI",
		"name": "TrailTraceActualTx",
		"value": null,
		"currentValue": "Use NE Value",
		"discA": null,
		"discZ": null,
		"type": "String",
		"editorArgs": {
			"options": null,
			"maxlength": 15
		},
		"disabled": false
	},
	{
		"parameter": "ODUkSourceZATTI",
		"name": "TrailTraceExpectedRx",
		"value": null,
		"currentValue": "Use NE Value",
		"discA": null,
		"discZ": null,
		"type": "String",
		"editorArgs": {
			"options": null,
			"maxlength": 15
		},
		"disabled": false
	},
	{
		"parameter": "ODUkTTIMonitor",
		"name": "TrailTraceMonitor",
		"value": null,
		"currentValue": "Use NE Value",
		"discA": null,
		"discZ": null,
		"type": "Enumeration",
		"editorArgs": {
			"options": [
				"Use NE Value",
				"Source Enabled",
				"Disabled"
			],
			"maxlength": 0
		},
		"disabled": false
	},
	{
		"parameter": "ODUkTTIMismatchConsequentAction",
		"name": "CAonTIM",
		"value": null,
		"currentValue": "Use NE Value",
		"discA": null,
		"discZ": null,
		"type": "Enumeration",
		"editorArgs": {
			"options": [
				"Use NE Value",
				"Enable",
				"Disable"
			],
			"maxlength": 0
		},
		"disabled": false
	},
	{
		"parameter": "ODUkPayloadTypeResp",
		"name": "PayloadTypeMismatchResponse",
		"value": null,
		"currentValue": "Use NE Value",
		"discA": null,
		"discZ": null,
		"type": "Enumeration",
		"editorArgs": {
			"options": [
				"Use NE Value",
				"Enable",
				"Disable"
			],
			"maxlength": 0
		},
		"disabled": false
	},
	{
		"parameter": "TraceMismatchMonitor",
		"name": "TrailTraceEnablePoints",
		"value": null,
		"currentValue": "Enable End-points only",
		"discA": null,
		"discZ": null,
		"type": "Enumeration",
		"editorArgs": {
			"options": [
				"Enable End-points only",
				"Enable All",
				"Use NE Value"
			],
			"maxlength": 0
		},
		"disabled": false
	},
	{
		"parameter": "ODUkPayloadType",
		"name": "payloadType",
		"value": null,
		"currentValue": "Use NE Value",
		"discA": null,
		"discZ": null,
		"type": "Enumeration",
		"editorArgs": {
			"options": [
				"Use NE Value",
				"GFP",
				"AMCC",
				"OLDAMCC",
				"BSCBR",
				"CAMCC"
			],
			"maxlength": 0
		  },
		  "disabled": false
		},
		{
		  "parameter": "AEndCSFProp",
		  "name": "AEndcsfprop",
		  "value": null,
		  "currentValue": "Use NE Value",
		  "discA": null,
		  "discZ": null,
		  "type": "Enumeration",
		  "editorArgs": {
			"options": [
			  "Use NE Value",
			  "None",
			  "Forward",
			  "Forward and Backward",
			  "Enhanced Forward"
			],
			"maxlength": 0
		  },
		  "disabled": false
		},
		{
		  "parameter": "ZEndCSFProp",
		  "name": "ZEndcsfprop",
		  "value": null,
		  "currentValue": "Use NE Value",
		  "discA": null,
		  "discZ": null,
		  "type": "Enumeration",
		  "editorArgs": {
			"options": [
			  "Use NE Value",
			  "None",
			  "Forward",
			  "Forward and Backward",
			  "Enhanced Forward"
			],
			"maxlength": 0
		  },
		  "disabled": false
		},
		{
		  "parameter": "AEndCSFType",
		  "name": "AEndcsftype",
		  "value": null,
		  "currentValue": "Use NE Value",
		  "discA": null,
		  "discZ": null,
		  "type": "Enumeration",
		  "editorArgs": {
			"options": [
			  "Use NE Value",
			  "Loss of Client Signal",
			  "Loss of Client Synchronization"
			],
			"maxlength": 0
		  },
		  "disabled": false
		},
		{
		  "parameter": "ZEndCSFType",
		  "name": "ZEndcsftype",
		  "value": null,
		  "currentValue": "Use NE Value",
		  "discA": null,
		  "discZ": null,
		  "type": "Enumeration",
		  "editorArgs": {
			"options": [
			  "Use NE Value",
			  "Loss of Client Signal",
			  "Loss of Client Synchronization"
			],
			"maxlength": 0
		  },
		  "disabled": false
		}
	  ],
	  "tcmLevel": "notcm",
	  "waitForServerRestoration": "false",
	  "preferredRestorationMode": "norestore",
	  "reversionMode": "manual",
	  "maxlatency": null,
	  "defaultsetuppriority": "5",
	  "defaultpriority": "4",
	  "includecolorprofile": null,
	  "excludecolorprofile": null,
	  "clientprotectiontype": "0",
	  "clientholdofftime": "0",
	  "clientprotectedMethod": "0",
	  "clientprotectingMethod": "0",
	  "clientsignaldegrade": "0",
	  "clientwaittime": "5",
	  "clientrevertivemode": "1",
	  "nwkprotectiontype": "0",
	  "nwkholdofftime": "0",
	  "nwkprotectedMethod": "0",
	  "nwkprotectingMethod": "0",
	  "nwksignaldegrade": "0",
	  "nwkwaittime": "5",
	  "nwkrevertivemode": "1",
	  "asonsubntwkprttype": "SNCP",
	  "pm15min": "false",
	  "pmdata15": "0",
	  "direction15": "0",
	  "tpmonitor15": "2",
	  "reportinfo15": "1",
	  "pm24hr": "true",
	  "pmdata24": "0",
	  "direction24": "0",
	  "tpmonitor24": "2",
	  "reportinfo24": "0",
	  "alarmEnable": "NOTSET",
	  "autoInService": "Disable",
	  "autoInServiceTimer": null,
	  "a1osnr": null,
	  "a2osnr": null,
	  "z1osnr": null,
	  "z2osnr": null,
	  "routingeffort": "2",
	  "routefrequency": "",
	  "ordersensitive": "false",
	  "otnRoutingConstraints": [
	  ],
	  "wavekeyConfig": "N/A",
	  "wavekeytype": "auto",
	  "azwavekeypref": "none",
	  "zawavekeypref": "none",
	  "wavekeyassignment": "system",
	  "azwavekeypair": null,
	  "zawavekeypair": null,
	  "azwavekeyrekey": "NORekey",
	  "zawavekeyrekey": "NORekey",
	  "hassdx": "no",
	  "freq1": null,
	  "freq1azwavekeypair": null,
	  "freq1zawavekeypair": null,
	  "freq2": null,
	  "freq2azwavekeypair": null,
	  "freq2zawavekeypair": null,
	  "freq3": null,
	  "freq3azwavekeypair": null,
	  "freq3zawavekeypair": null,
	  "freq4": null,
	  "freq4azwavekeypair": null,
	  "freq4zawavekeypair": null,
	  "allowUncommissioned": "true",
	  "provisionwavekey": "keyed",
	  "connectionid": -1,
	  "orderid": -1,
	  "ordernumber": null,
	  "rearrange": "soft",
	  "reinstate": "none",
	  "operation": "create",
	  "hasopsb": "no",
	  "fromaside": "working",
	  "asidefromne": null,
	  "asidefromport": null,
	  "frombside": "Protection",
	  "bsidefromne": null,
	  "bsidefromport": null,
	  "toaside": "working",
	  "asidetone": null,
	  "asidetoport": null,
	  "tobside": "Protection",
	  "bsidetone": null,
	  "bsidetoport": null,
	  "asidefromport_AdditionalInfo": null,
	  "bsidefromport_AdditionalInfo": null,
	  "asidetoport_AdditionalInfo": null,
	  "bsidetoport_AdditionalInfo": null,
	  "hasycable": "no",
	  "hasycable1": "no",
	  "ycablefromne": "CLOUD_2",
	  "ycablefromwkport": null,
	  "ycablefromprotPort": null,
	  "ycabletone": "CLOUD_3",
	  "ycabletowkport": null,
	  "ycabletoprotport": null,
	  "ycableswitchmode": "uni",
	  "ycablerevertivemode": "Disabled",
	  "ycablerestoretime": "5",
	  "ycabletimeslot": "1",
	  "ycablefromwkport_AdditionalInfo": null,
	  "ycablefromprotPort_AdditionalInfo": null,
	  "ycabletowkport_AdditionalInfo": null,
	  "ycabletoprotport_AdditionalInfo": null,
	  "asonrouted": "false",
	  "mrntunnel": "false",
	  "asonconnectionType": "TermTunnel",
	  "provisionedBitRate": "UseNEValue",
	  "provisionedBitRateDsr": "UseNEValue",
	  "odu4InterworkingMode": "UseNEValue",
	  "payloadTypeMismatchResponse": "UseNEValue",
	  "mappingMode": "UseNEValue",
	  "encapsulationMode": "UseNEValue",
	  "lospropagation": "BothAZ",
	  "xmnAZClassificationMode": null,
	  "xmnZAClassificationMode": null,
	  "defalutsetuppriority": "5",
	  "defalutpriority": "4",
	  "asonsubntwrkprotectiontype": "SNCP",
	  "ycablefromprotport": null
}

JSON Response

{
		"reqCompletionStatus": 0,
		"requestId": 0,
		"clientName": null,
		"clientLocation": null,
		"clientUser": null,
		"sessionId": "",
		"mdcId": null,
		"sequenceNum": 0,
		"moreToCome": false,
		"messages": [
		],
		"errcde": null,
		"errorParams": null,
		"nextTasks": null,
		"items": [
		{
			"className": "path",
			"id": "182",
			"key": "path/182",
			"guiLabel": "SERVICE-2",
			"vsClientState": "VSCS_NOT_APPLICABLE",
			"vsClientId": 0,
			"connectionType": "path",
			"receivedDate": "2016-03-11T14:17:06Z",
			"orderId": "272",
			"groupOrderId": "181",
			"groupOrderType": "GOT_CLNT_AND_SERVERS_PROV",
			"groupOrderName": "g-SERVICE-2",
			"connectionAlias": "SERVICE-2",
			"orderStep": "CST_IN_EFFECT",
			"stepState": "SSTATE_COMPLETED",
			"orderType": "OT_ADD",
			"layerRate": "DSR",
			"effectiveRate": "10GbE",
			"displayProtectionType": "DPT_UN_PROTECTED",
			"protectionRole": "PR_NA",
			"state": "CST_IN_EFFECT",
			"operationalState": "Enabled",
			"category": "CC_MANAGED_PLANE",
			"alarmEnabling": "Not Set",
			"alarmState": "Cleared",
			"alarmSeverity": "Cleared",
			"TCMEnabled": "TCM_STATUS_NA",
			"TCMASAPEnabled": "TCM_STATUS_NA",
			"nmlASAPName": "default ASAP",
			"orderNumber": "A237",
			"customerName": "None",
			"serviceState": "ServiceState_ON",
			"provisionableWavekey": "N/A",
			"a1NeName": "CLOUD_2",
			"a1PortName": "130SNX10-1-11-C3",
			"z1NeName": "CLOUD_3#OCS",
			"z1PortName": "GBE10-1-1-16-3",
			"a1NodeName": "CLOUD_2",
			"z1NodeName": "CLOUD_3",
			"aNodeId": 96,
			"zNodeId": 94,
			"a2NodeId": 0,
			"z2NodeId": 0,
			"aPortLabel": "CLOUD_2/130SNX10-1-11-C3",
			"zPortLabel": "CLOUD_3#OCS/GBE10-1-1-16-3",
			"pm24hour": "Started",
			"pm15min": "NotEnabled",
			"nprTlId": "-1",
			"sdhConnectionId": "-1",
			"sdhClientId": "-1",
			"isUsedInSdh": "false",
			"fdn": "2/182",
			"mismatchType": "NA",
			"clientRouteState": "NA",
			"createdBy": "CB_USER",
			"inconsistentMismatchType": "",
			"inconsistentAcknowledgedBy": "",
			"inconsistentEventDate": "",
			"inconsistentAckDate": "",
			"isL0CRRD": "false",
			"isCurrentRouteRD": "false",
			"aportLabel": "CLOUD_2/130SNX10-1-11-C3",
			"zportLabel": "CLOUD_3#OCS/GBE10-1-1-16-3",
			"tcmenabled": "TCM_STATUS_NA",
			"tcmasapenabled": "TCM_STATUS_NA"
		}
	],
	"data": null,
	"successfulCompletion": false,
	"failedCompletion": false
}