Update FE project

Update FE to latest version so that fe can run on docker

Change-Id: I9c5dee756b567dbe64fac6d3d6fd89362813bdcc
Issue-ID: SDC-1359
Signed-off-by: Stone, Avi (as206k) <as206k@att.com>
diff --git a/public/.angular-cli.json b/public/.angular-cli.json
index fa9ff9f..2c38370 100644
--- a/public/.angular-cli.json
+++ b/public/.angular-cli.json
@@ -54,6 +54,9 @@
     }
   ],
   "test": {
+    "codeCoverage": {
+      "exclude": ["src/app/store/store.ts"]
+    },
     "karma": {
       "config": "./karma.conf.js"
     }
diff --git a/public/.nyc_output/out.json b/public/.nyc_output/out.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/public/.nyc_output/out.json
@@ -0,0 +1 @@
+{}
diff --git a/public/cypress.json b/public/cypress.json
index 5a2036d..51c046b 100644
--- a/public/cypress.json
+++ b/public/cypress.json
@@ -2,6 +2,7 @@
   "chromeWebSecurity": false,
   "requestTimeout": 60000,
   "responseTimeout": 100000,
+  "videoRecording": false,
   "baseUrl": "http://localhost:4300/#/",
   "env": {
     "backendUrl": "http://localhost:8446"
diff --git a/public/cypress/fixtures/createMcRes.json b/public/cypress/fixtures/createMcRes.json
index ada82bc..e764c18 100644
--- a/public/cypress/fixtures/createMcRes.json
+++ b/public/cypress/fixtures/createMcRes.json
@@ -1,5 +1,5 @@
 {
-  "vfcmt":{
+  "vfcmt": {
     "uuid": "6d436c07-8006-4335-8c84-d65b4740f8d6"
   },
   "cdump": {
@@ -965,7 +965,72 @@
         "type": { "name": "tosca.dcae.nodes.cdapApp.Enrich" }
       }
     ],
-    "relations": [],
+    "relations": [
+      {
+        "n1": "n.1520766712715.7",
+        "name1": "foi",
+        "n2": "n.1520766711386.5",
+        "name2": "topic1",
+        "meta": {
+          "n1": "n.1520766712715.7",
+          "p1": "stream_publish_0",
+          "relationship": ["foi", null, "stream_publish_0"],
+          "n2": "n.1520766711386.5",
+          "p2": "topic"
+        }
+      },
+      {
+        "n1": "n.1520766712715.7",
+        "name1": "foi",
+        "n2": "n.1520766712709.6",
+        "name2": "feed0",
+        "meta": {
+          "n1": "n.1520766712715.7",
+          "p1": "stream_publish_0",
+          "n2": "n.1520766712709.6",
+          "p2": "feed",
+          "relationship": [
+            "foi",
+            "dcae.relationships.publish_files",
+            "stream_publish_0"
+          ]
+        }
+      },
+      {
+        "n1": "n.1520766711370.3",
+        "name1": "componentSpec_docker_map",
+        "n2": "n.1520766711379.4",
+        "name2": "feed0",
+        "meta": {
+          "n1": "n.1520766711370.3",
+          "p1": "stream_subscribe_0",
+          "n2": "n.1520766711379.4",
+          "p2": "feed",
+          "relationship": [
+            "componentSpec_docker_map",
+            "dcae.relationships.subscribe_to_files",
+            "stream_subscribe_0"
+          ]
+        }
+      },
+      {
+        "n1": "n.1520766711370.3",
+        "name1": "componentSpec_docker_map",
+        "n2": "n.1520766711386.5",
+        "name2": "topic1",
+        "meta": {
+          "n1": "n.1520766711370.3",
+          "p1": "stream_publish_0",
+          "n2": "n.1520766711386.5",
+          "p2": "topic",
+          "relationship": [
+            "componentSpec_docker_map",
+            "dcae.relationships.publish_events",
+            "stream_publish_0"
+          ]
+        }
+      }
+    ],
     "inputs": [],
     "outputs": []
   }
diff --git a/public/cypress/fixtures/createMcResWithBooleanDDL.json b/public/cypress/fixtures/createMcResWithBooleanDDL.json
new file mode 100644
index 0000000..3fcd512
--- /dev/null
+++ b/public/cypress/fixtures/createMcResWithBooleanDDL.json
@@ -0,0 +1,1060 @@
+{
+  "vfcmt": {
+    "uuid": "6d436c07-8006-4335-8c84-d65b4740f8d6"
+  },
+  "cdump": {
+    "cid": "47908e78-9893-4f18-b767-ea7131dd8de7",
+    "version": 0,
+    "nodes": [
+      {
+        "name": "map",
+        "description":
+          "/sdc/v1/catalog/resources/e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/artifacts/6134d7c8-f9af-4562-bf8d-e60039ec58bb",
+        "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b",
+        "nid": "n.1517823219961.0",
+        "capabilities": [
+          {
+            "name": "stream_subscribe_0",
+            "type": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "properties": [
+              {
+                "assignment": { "value": "Map_input" },
+                "name": "format",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "IGNORE" },
+                "name": "route",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "1.0.0" },
+                "name": "version",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "requirements": [
+          {
+            "capability": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "node_filter": {
+              "capabilities": [
+                {
+                  "dcae.capabilities.stream.subscribe": {
+                    "properties": [
+                      { "format": [{ "equal": "VES_specification" }] },
+                      { "version": [{ "equal": "5.28.4" }] }
+                    ]
+                  }
+                }
+              ]
+            },
+            "name": "stream_publish_0",
+            "relationship": { "type": "dcae.relationships.rework_connected_to" }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.cdapHost",
+              "id": "template.yaml/dcae.capabilities.cdapHost"
+            },
+            "name": "host",
+            "relationship": {
+              "type": "dcae.relationships.component_contained_in"
+            }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.composition.host",
+              "id": "template.yaml/dcae.capabilities.composition.host"
+            },
+            "name": "composition"
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": { "type": "tosca.relationships.DependsOn" }
+          }
+        ],
+        "properties": [
+          {
+            "assignment": {
+              "value": ""
+            },
+            "name": "valueUndefined",
+            "description": "valueUndefined",
+            "type": "boolean",
+            "constraints": [
+              {
+                "valid_values": ["single", "multiple"]
+              }
+            ]
+          },
+          {
+            "assignment": {
+              "value": "false"
+            },
+            "name": "valueFalse",
+            "description": "DDL value false",
+            "type": "boolean",
+            "constraints": [
+              {
+                "valid_values": ["single", "multiple"]
+              }
+            ]
+          },
+          {
+            "assignment": {
+              "value": "true"
+            },
+            "name": "valueTrue",
+            "description": "DDL value true",
+            "type": "boolean",
+            "constraints": [
+              {
+                "valid_values": ["single", "multiple"]
+              }
+            ]
+          },
+          {
+            "assignment": {
+              "value": "multiple"
+            },
+            "name": "mappingType",
+            "description":
+              "CSV to VES mapping, from the file to generate multiple events or single event",
+            "type": "string",
+            "constraints": [
+              {
+                "valid_values": ["single", "multiple"]
+              }
+            ]
+          },
+          {
+            "assignment": {
+              "value":
+                "com.att.gfp.dcae.eventProcessor.Catalog,com.att.ecomp.dcae.eventproc.cdap.common.processors.Catalog"
+            },
+            "name": "defaultCatalogs",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "defaultObjects" } },
+            "name": "defaultObjects",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "Map Microservice" },
+            "name": "description",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "dmaapConsumerGrp" } },
+            "name": "dmaapConsumerGrp",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "" },
+            "name": "eventFactory",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"processing\":[{\"phase\":\"snmp_map\",\"filter\":{\"class\":\"StartsWith\",\"string\":\"${notify OID}\",\"value\":\".1.3.6.1.4.1.26878.200.2\"},\"processors\":[{\"class\":\"SnmpConvertor\",\"array\":\"varbinds\",\"keycolumn\":\"varbind_oid\",\"datacolumn\":\"varbind_value\"},{\"class\":\"RunPhase\",\"phase\":\"vPCRF_MOGParsingPhase\"}]},{\"phase\":\"vPCRF_MOGParsingPhase\",\"processors\":[{\"class\":\"MapAlarmValues\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"toField\":\"eventGroup\",\"map\":{\"LinkDown\":\"LinkUp_Down\",\"LinkUp\":\"LinkUp_Down\",\"HIGH CPU USAGE Alert\":\"HighCpuUsageAlert-Clear\",\"HIGH CPU USAGE Clear\":\"HighCpuUsageAlert-Clear\",\"ProcessDown\":\"ProcessUp-Down\",\"ProcessUp\":\"ProcessUp-Down\",\"HighLoadAlert\":\"HighLoadAlert-Clear\",\"HighLoadClear\":\"HighLoadAlert-Clear\",\"DiskFullAlert\":\"DiskFullAlert-Clear\",\"DiskFullClear\":\"DiskFullAlert-Clear\",\"LowSwapAlert\":\"LowMemoryAlert-Clear\",\"LowSwapClear\":\"LowMemoryAlert-Clear\",\"LowMemoryAlert\":\"LowMemoryAlert-Clear\",\"LowMemoryClear\":\"LowMemoryAlert-Clear\",\"ApplicationStartError\":\"ApplicationStartError\",\"LicenseUsageThresholdExceeded \":\"LicenseUsageThresholdExceeded \",\"LicensedSessionCreation\":\"LicensedSessionCreation\",\"InvalidLicense\":\"InvalidLicense\",\"PoliciesNotConfigured\":\"PoliciesNotConfigured\",\"DiameterAllPeersDown\":\"DiameterAllPeersUp-Down\",\"DiameterAllPeersUp\":\"DiameterAllPeersUp-Down\",\"HA Failover\":\"HAFailover\",\"GR Failover\":\"GRFailover\",\"All DB Member of replica set Down\":\"AllDBMemberReplicaSetUp-Down\",\"All DB Member of replica set Up\":\"AllDBMemberReplicaSetUp-Down\",\"No Primary DB Member Found\":\"PrimaryDBMemberFound-NotFound\",\"Primary DB Member Found\":\"PrimaryDBMemberFound-NotFound\",\"Secondary DB Member Down\":\"SecondaryDBMemberUp-Down\",\"Secondary DB Member Up\":\"SecondaryDBMemberUp-Down\",\"Arbiter Down\":\"ArbiterUp-Down\",\"Arbiter Up\":\"ArbiterUp-Down\",\"DB resync is needed\":\"DBResyncNeeded-NotNeeded\",\"DB resync is not needed\":\"DBResyncNeeded-NotNeeded\",\"Config Server Down\":\"ConfigServerUp-Down\",\"Config Server Up\":\"ConfigServerUp-Down\",\"VM Down\":\"VMUp-Down\",\"VM Up\":\"VMUp-Down\",\"QNS Process Down\":\"QNSProcessUp-Down\",\"QNS Process Up\":\"QNSProcessUp-Down\",\"VirtualInterface Down\":\"VirtualInterfaceUp-Down\",\"VirtualInterface Up\":\"VirtualInterfaceUp-Down\",\"MemcachedConnectError\":\"MemcachedConnectError\",\"PolicyConfiguration\":\"PolicyConfiguration\",\"DiameterPeerDown\":\"DiameterPeerDown\",\"DeveloperMode\":\"DeveloperMode\",\"ZeroMQConnectionError\":\"ZeroMQConnectionError\",\"Admin User Logged In\":\"AdminUserLoggedIn\"}},{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.domain\":\"fault\",\"event.commonEventHeader.version\":3,\"event.faultFields.faultFieldsVersion\":2.0,\"event.faultFields.vfStatus\":\"Active\",\"event.commonEventHeader.priority\":\"Normal\",\"event.commonEventHeader.sequence\":0,\"event.faultFields.alarmCondition\":\"${_1_3_6_1_4_1_26878_100_1_1_9}\",\"event.faultFields.alarmAdditionalInformation[0].name\":\"EventGroup\",\"event.faultFields.alarmAdditionalInformation[0].value\":\"${eventGroup}\",\"event.faultFields.alarmAdditionalInformation[1].name\":\"OID1\",\"event.faultFields.alarmAdditionalInformation[1].value\":\"${varbinds[0].varbind_value}\"}},{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.startEpochMicrosec\":\"%{now.ms}\"}},{\"class\":\"MapAlarmValues\",\"field\":\"_1_3_6_1_4_1_26878_100_1_4\",\"default\":\"WARNING\",\"toField\":\"event.faultFields.eventSeverity\",\"map\":{\"0\":\"CRITICAL\",\"1\":\"CRITICAL\",\"2\":\"MAJOR\",\"3\":\"MAJOR\",\"4\":\"MINOR\",\"5\":\"WARNING\",\"6\":\"WARNING\",\"7\":\"WARNING\",\"8\":\"WARNING\",\"9\":\"NORMAL\"}},{\"class\":\"MapAlarmValues\",\"field\":\"_1_3_6_1_4_1_26878_100_1_3\",\"default\":\"\",\"toField\":\"event.faultFields.specificProblem\",\"map\":{\"0\":\"Hardware\",\"1\":\"Networking\",\"2\":\"Virtualization\",\"3\":\"Operating System\",\"4\":\"Application\",\"5\":\"Process\"}},{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.lastEpochMicrosec\":\"${event.commonEventHeader.startEpochMicrosec}\"}},{\"class\":\"ConvertFieldTypes\",\"updates\":{\"event.commonEventHeader.startEpochMicrosec\":\"long\",\"event.commonEventHeader.lastEpochMicrosec\":\"long\"}}]},{\"phase\":\"vPCRF_MOGParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"DiskFullAlert\",\"LowSwapAlert\",\"LowMemoryAlert\"]},\"processors\":[{\"class\":\"Set\",\"updates\":{\"event.faultFields.eventSeverity\":\"MAJOR\"}}]},{\"phase\":\"vPCRF_MOGParsingPhase\",\"filter\":{\"class\":\"Contains\",\"string\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"value\":\"mog\"},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"event.commonEventHeader.sourceName\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\"([^:]*):.*\"},{\"class\":\"Set\",\"updates\":{\"event.faultFields.eventSourceType\":\"vMOG\",\"event.commonEventHeader.functionalRole\":\"vMoG\",\"event.commonEventHeader.eventType\":\"vMoG_Alarms\",\"event.commonEventHeader.eventId\":\"${event.commonEventHeader.sourceName}_${eventGroup}\",\"event.commonEventHeader.eventName\":\"NA\"}}]},{\"phase\":\"vPCRF_MOGParsingPhase\",\"filter\":{\"class\":\"Not\",\"filter\":{\"class\":\"Contains\",\"string\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"value\":\"mog\"}},\"processors\":[{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.sourceName\":\"${agent address}\",\"event.faultFields.eventSourceType\":\"vPCRF\",\"event.commonEventHeader.functionalRole\":\"vPCRF\",\"event.commonEventHeader.eventType\":\"PCRF_Alarms\",\"event.commonEventHeader.eventId\":\"${agent address}_${eventGroup}\",\"event.commonEventHeader.reportingEntityName\":\"${event.commonEventHeader.sourceName}\"}}]},{\"phase\":\"vPCRF_MOGParsingPhase\",\"filter\":{\"class\":\"Contains\",\"string\":\"${_1_3_6_1_4_1_26878_100_1_1_7}\",\"value\":\"mogx\"},\"processors\":[{\"class\":\"Set\",\"updates\":{\"event.faultFields.alarmCondition\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"event.faultFields.specificProblem\":\"${_1_3_6_1_4_1_26878_100_1_1_9}\",\"event.commonEventHeader.reportingEntityName\":\"${event.commonEventHeader.sourceName}\"}},{\"class\":\"RunPhase\",\"phase\":\"vPCRF_MOGX_ParsingPhase\"},{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.eventId\":\"${event.commonEventHeader.sourceName}_${eventGroup}_${eventKey}\"}}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"LinkDown\",\"LinkUp\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* (.*)\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"ProcessDown\",\"ProcessUp\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*:(.*) process.*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"DiskFullAlert\",\"DiskFullClear\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*:(.*):.*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"QNS Process Down\",\"QNS Process Up\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*:(.*) server on .*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"DiameterPeerDown\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* (.*) [R/r]ealm.*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"DiameterAllPeersDown\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*Realm: (.*):[^:]*peers.*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"VirtualInterface Down\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*onnect (.*). Not reachable\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"VirtualInterface Up\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*: (.*) is up\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"GR Failover\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*: (Geo Failover done from .*) of .*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"Arbiter Down\",\"Arbiter Up\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* Arbiter (.*) is .*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"All DB Member of replica set Down\",\"All DB Member of replica set Up\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* All DB members of replica set (.*) are .*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"No Primary DB Member Found\",\"Primary DB Member Found\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* Replica-set (.*)\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"DB Member Down\",\"DB Member Up\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* (DB.Member .*) of SET .*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"Secondary DB Member Down\",\"Secondary DB Member Up\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".*Secondary (DB.*) is.*\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"DB Resync is needed\",\"DB Resync is not needed\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* member (.*:[0-9]+).*$\"}]},{\"phase\":\"vPCRF_MOGX_ParsingPhase\",\"filter\":{\"class\":\"OneOf\",\"field\":\"_1_3_6_1_4_1_26878_100_1_1_9\",\"values\":[\"ZeroMQConnectionError\"]},\"processors\":[{\"class\":\"ExtractText\",\"field\":\"eventKey\",\"value\":\"${_1_3_6_1_4_1_26878_100_1_1_10}\",\"regex\":\".* for (tcp.*)\"}]},{\"phase\":\"vPCRF_MOGParsingPhase\",\"processors\":[{\"class\":\"Clear\",\"fields\":[\"community len\",\"cambria.partition\",\"notify OID\",\"notify OID len\",\"epoch_serno\",\"protocol version\",\"agent name\",\"trap category\",\"community\",\"time received\",\"agent address\",\"varbinds\"]},{\"class\":\"ClearNoneStandardFields\",\"reservedFields\":[\"event\",\"parserType\"]},{\"class\":\"LogEvent\",\"title\":\"UCSNMPEvent-vPCRF_MOG_Parser_Output\",\"logName\":\"com.att.gfp.dcae.eventProcessor.output\",\"logLevel\":\"DEBUG\"},{\"class\":\"LogText\",\"logLevel\":\"INFO\",\"logText\":\"Finished_vPCRF_MOGParsingPhase Mapping Phase\"},{\"class\":\"RunPhase\",\"phase\":\"map_publish\"}]}]}"
+            },
+            "name": "json",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "monitorThreads" } },
+            "name": "monitorThreads",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "mapMS" },
+            "name": "name",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "snmp_map" },
+            "name": "phases.snmp_map.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*snmp.*" },
+            "name": "phases.snmp_map.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "syslog_map" },
+            "name": "phases.syslog_map.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*syslog.*" },
+            "name": "phases.syslog_map.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"phase\":\"map_publish\",\"processors\":[{\"class\":\"EventProcessorMetric\",\"metric\":\"out.events\"},{\"class\":\"SendEvent\",\"channel\":\"DCAE-MAP-EVENT-OUT\"}]}"
+            },
+            "name": "postConfig",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "vnfTypes.*" },
+            "name": "ruleKeyPattern",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "[{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"MOD\",\"INT\":\"INT\",\"HSEV\":\"header-SEV \",\"SEVDES\":\"Syslog-Severity\"},\"filter\":{\"${Priority}\":\"$Priority\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"0\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"1\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"0\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"2\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"0\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"3\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"0\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"4\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"0\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"5\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"0\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"6\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"0\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"7\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"1\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"8\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"1\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"9\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"1\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"10\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"1\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"11\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"1\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"12\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"1\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"13\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"1\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"14\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"1\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"15\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"2\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"16\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"2\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"17\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"2\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"18\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"2\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"19\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"2\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"20\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"2\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"21\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"2\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"22\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"2\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"23\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"3\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"24\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"3\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"25\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"3\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"26\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"3\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"27\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"3\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"28\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"3\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"29\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"3\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"30\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"3\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"31\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"4\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"32\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"4\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"33\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"4\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"34\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"4\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"35\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"4\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"36\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"4\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"37\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"4\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"38\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"4\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"39\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"5\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"40\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"5\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"41\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"5\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"42\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"5\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"43\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"5\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"44\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"5\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"45\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"5\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"46\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"5\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"47\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"6\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"48\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"6\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"49\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"6\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"50\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"6\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"51\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"6\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"52\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"6\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"53\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"6\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"54\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"6\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"55\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"7\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"56\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"7\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"57\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"7\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"58\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"7\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"59\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"7\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"60\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"7\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"61\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"7\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"62\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"7\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"63\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"8\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"64\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"8\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"65\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"8\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"66\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"8\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"67\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"8\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"68\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"8\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"69\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"8\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"70\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"8\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"71\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"9\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"72\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"9\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"73\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"9\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"74\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"9\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"75\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"9\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"76\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"9\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"77\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"9\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"78\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"9\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"79\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"10\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"80\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"10\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"81\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"10\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"82\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"10\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"83\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"10\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"84\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"10\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"85\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"10\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"86\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"10\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"87\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"11\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"88\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"11\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"89\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"11\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"90\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"11\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"91\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"11\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"92\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"11\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"93\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"11\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"94\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"11\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"95\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"12\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"96\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"12\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"97\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"12\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"98\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"12\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"99\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"12\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"100\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"12\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"101\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"12\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"102\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"12\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"103\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"13\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"104\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"13\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"105\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"13\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"106\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"13\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"107\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"13\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"108\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"13\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"109\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"13\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"110\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"13\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"111\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"14\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"112\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"14\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"113\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"14\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"114\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"14\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"115\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"14\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"116\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"14\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"117\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"14\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"118\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"14\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"119\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"15\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"120\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"15\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"121\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"15\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"122\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"15\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"123\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"15\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"124\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"15\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"125\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"15\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"126\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"15\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"127\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"16\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"128\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"16\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"129\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"16\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"130\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"16\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"131\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"16\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"132\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"16\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"133\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"16\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"134\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"16\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"135\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"17\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"136\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"17\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"137\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"17\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"138\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"17\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"139\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"17\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"140\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"17\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"141\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"17\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"142\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"17\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"143\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"18\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"144\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"18\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"145\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"18\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"146\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"18\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"147\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"18\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"148\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"18\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"149\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"18\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"150\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"18\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"151\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"19\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"152\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"19\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"153\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"19\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"154\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"19\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"155\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"19\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"156\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"19\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"157\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"19\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"158\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"19\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"159\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"20\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"160\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"20\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"161\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"20\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"162\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"20\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"163\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"20\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"164\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"20\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"165\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"20\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"166\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"20\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"167\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"21\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"168\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"21\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"169\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"21\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"170\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"21\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"171\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"21\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"172\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"21\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"173\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"21\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"174\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"21\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"175\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"22\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"176\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"22\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"177\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"22\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"178\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"22\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"179\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"22\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"180\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"22\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"181\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"22\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"182\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"22\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"183\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"23\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"184\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"23\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"185\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"23\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"186\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"23\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"187\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"23\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"188\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"23\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"189\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"23\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"190\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"23\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"191\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"0\",\"INT\":\"24\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Emergency: system is unusable\"},\"filter\":{\"${Priority}\":\"192\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"1\",\"INT\":\"24\",\"HSEV\":\"CRITICAL\",\"SEVDES\":\"Alert: action must be taken immediately\"},\"filter\":{\"${Priority}\":\"193\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"2\",\"INT\":\"24\",\"HSEV\":\"MAJOR\",\"SEVDES\":\"Critical: critical conditions\"},\"filter\":{\"${Priority}\":\"194\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"3\",\"INT\":\"24\",\"HSEV\":\"MINOR\",\"SEVDES\":\"Error: error conditions\"},\"filter\":{\"${Priority}\":\"195\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"4\",\"INT\":\"24\",\"HSEV\":\"WARNING\",\"SEVDES\":\"Warning: warning conditions\"},\"filter\":{\"${Priority}\":\"196\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"5\",\"INT\":\"24\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Notice: normal but significant condition\"},\"filter\":{\"${Priority}\":\"197\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"6\",\"INT\":\"24\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Informational: informational messages\"},\"filter\":{\"${Priority}\":\"198\"}},{\"key\":\"syslogLookup\",\"value\":{\"MOD\":\"7\",\"INT\":\"23\",\"HSEV\":\"NORMAL\",\"SEVDES\":\"Debug: debug-level messages\"},\"filter\":{\"${Priority}\":\"199\"}}]"
+            },
+            "name": "settings",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "False" },
+            "name": "startNoChannels",
+            "type": "string"
+          },
+          {
+            "default": "cdap_broker",
+            "assignment": {
+              "value": { "get_input": "connected_broker_dns_name" }
+            },
+            "name": "connected_broker_dns_name",
+            "type": "string",
+            "required": true
+          },
+          { "name": "jar_url", "type": "string", "required": true },
+          {
+            "assignment": {
+              "value": {
+                "get_property": ["SELF", "composition", "location_id"]
+              }
+            },
+            "name": "location_id",
+            "type": "string",
+            "required": true
+          },
+          {
+            "name": "service_component_type",
+            "type": "string",
+            "required": true
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.dcae.nodes.cdapApp.Map",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.stream.subscribe"
+              },
+              "capability": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.stream.subscribe"
+              },
+              "name": "stream_publish_0",
+              "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/stream_publish_0",
+              "relationship": {
+                "type": "dcae.relationships.rework_connected_to"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.cdapHost"
+              },
+              "capability": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.cdapHost"
+              },
+              "name": "host",
+              "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/host",
+              "relationship": {
+                "type": "dcae.relationships.component_contained_in"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.composition.host"
+              },
+              "capability": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.composition.host"
+              },
+              "name": "composition",
+              "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/composition"
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dependency",
+              "relationship": { "type": "tosca.relationships.DependsOn" }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "stream_subscribe_0",
+              "type": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/dcae.capabilities.stream.subscribe"
+              }
+            },
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "http://135.91.225.81:8080",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.cdapApp",
+              "id":
+                "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.dcae.nodes.cdapApp"
+            },
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "e45ec9d7-01df-4cb1-896f-aff2a6ca5a8b/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.cdapApp.Map",
+          "id": 0
+        },
+        "type": { "name": "tosca.dcae.nodes.cdapApp.Map" }
+      },
+      {
+        "name": "supplement",
+        "description":
+          "/sdc/v1/catalog/resources/30d0b4f4-efc5-424a-9d26-6d7843a0971d/artifacts/2d68c4e3-a4ab-46b3-ae3b-2a593fa97ded",
+        "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d",
+        "nid": "n.1517823224030.1",
+        "capabilities": [
+          {
+            "name": "stream_subscribe_0",
+            "type": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "properties": [
+              {
+                "assignment": { "value": "VES_specification" },
+                "name": "format",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "IGNORE" },
+                "name": "route",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "5.28.4" },
+                "name": "version",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "requirements": [
+          {
+            "capability": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "node_filter": {
+              "capabilities": [
+                {
+                  "dcae.capabilities.stream.subscribe": {
+                    "properties": [
+                      { "format": [{ "equal": "VES_specification" }] },
+                      { "version": [{ "equal": "5.28.4" }] }
+                    ]
+                  }
+                }
+              ]
+            },
+            "name": "stream_publish_0",
+            "relationship": { "type": "dcae.relationships.rework_connected_to" }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.cdapHost",
+              "id": "template.yaml/dcae.capabilities.cdapHost"
+            },
+            "name": "host",
+            "relationship": {
+              "type": "dcae.relationships.component_contained_in"
+            }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.composition.host",
+              "id": "template.yaml/dcae.capabilities.composition.host"
+            },
+            "name": "composition"
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": { "type": "tosca.relationships.DependsOn" }
+          }
+        ],
+        "properties": [
+          {
+            "assignment": {
+              "value":
+                "com.att.gfp.dcae.eventProcessor.Catalog,com.att.ecomp.dcae.eventproc.cdap.common.processors.Catalog"
+            },
+            "name": "defaultCatalogs",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "defaultObjects" } },
+            "name": "defaultObjects",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "Supplement Microservice" },
+            "name": "description",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "dmaapConsumerGrp" } },
+            "name": "dmaapConsumerGrp",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "" },
+            "name": "eventFactory",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"processing\":[{\"phase\":\"supplement\",\"filter\":{\"class\":\"OneOf\",\"field\":\"event.commonEventHeader.eventType\",\"values\":[\"vPCRF_Alarms\",\"vMoG_Alarms\",\"applicationVnf\",\"GuestOS_Alarms\",\"Control\"]},\"processors\":[{\"class\":\"DateFormatter\",\"value\":\"${event.commonEventHeader.startEpochMicrosec}\",\"fromFormat\":\"#ms\",\"fromTz\":\"GMT\",\"toField\":\"event.commonEventHeader.internalHeaderFields.firstDatetime\",\"toFormat\":\"EEE,ddMMMyyyyHH:mm:ssZ\",\"toTz\":\"GMT\"},{\"class\":\"DateFormatter\",\"value\":\"${event.commonEventHeader.lastEpochMicrosec}\",\"fromFormat\":\"#ms\",\"fromTz\":\"GMT\",\"toField\":\"event.commonEventHeader.internalHeaderFields.lastDatetime\",\"toFormat\":\"EEE,ddMMMyyyyHH:mm:ssZ\",\"toTz\":\"GMT\"},{\"class\":\"DateFormatter\",\"value\":\"%{now.ms}\",\"fromFormat\":\"#ms\",\"fromTz\":\"GMT\",\"toField\":\"event.commonEventHeader.internalHeaderFields.collectorTimeStamp\",\"toFormat\":\"EEE,ddMMMyyyyHH:mm:ssZ\",\"toTz\":\"GMT\"},{\"class\":\"Set\",\"updates\":{\"event.commonEventHeader.internalHeaderFields.internalHeaderFieldsVersion\":\"9.9\",\"event.commonEventHeader.internalHeaderFields.eventTag\":\"${hp.tag}\"}}]},{\"phase\":\"supplement\",\"processors\":[{\"class\":\"RunPhase\",\"phase\":\"supplement_publish\"}]},{\"phase\":\"ves_supplement\",\"filter\":{\"class\":\"OneOf\",\"field\":\"event.commonEventHeader.eventType\",\"values\":[\"vIRC_Alarms\"]},\"processors\":[{\"class\":\"RunPhase\",\"phase\":\"supplement_publish\"}]}]}"
+            },
+            "name": "json",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "monitorThreads" } },
+            "name": "monitorThreads",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "supplementMS" },
+            "name": "name",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "supplement" },
+            "name": "phases.supplement.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*supplement-in.*" },
+            "name": "phases.supplement.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "ves_supplement" },
+            "name": "phases.ves_supplement.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*sec-fault.*" },
+            "name": "phases.ves_supplement.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"phase\":\"supplement_publish\",\"processors\":[{\"class\":\"EventProcessorMetric\",\"metric\":\"out.events\"},{\"class\":\"SendEvent\",\"channel\":\"DCAE-SUPPLEMENT-EVENT-OUT\"}]}"
+            },
+            "name": "postConfig",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "vnfTypes.*" },
+            "name": "ruleKeyPattern",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "False" },
+            "name": "startNoChannels",
+            "type": "string"
+          },
+          {
+            "default": "cdap_broker",
+            "assignment": {
+              "value": { "get_input": "connected_broker_dns_name" }
+            },
+            "name": "connected_broker_dns_name",
+            "type": "string",
+            "required": true
+          },
+          { "name": "jar_url", "type": "string", "required": true },
+          {
+            "assignment": {
+              "value": {
+                "get_property": ["SELF", "composition", "location_id"]
+              }
+            },
+            "name": "location_id",
+            "type": "string",
+            "required": true
+          },
+          {
+            "name": "service_component_type",
+            "type": "string",
+            "required": true
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.dcae.nodes.cdapApp.Supplement",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.stream.subscribe"
+              },
+              "capability": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.stream.subscribe"
+              },
+              "name": "stream_publish_0",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/stream_publish_0",
+              "relationship": {
+                "type": "dcae.relationships.rework_connected_to"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.cdapHost"
+              },
+              "capability": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.cdapHost"
+              },
+              "name": "host",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/host",
+              "relationship": {
+                "type": "dcae.relationships.component_contained_in"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.composition.host"
+              },
+              "capability": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.composition.host"
+              },
+              "name": "composition",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/composition"
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dependency",
+              "relationship": { "type": "tosca.relationships.DependsOn" }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "stream_subscribe_0",
+              "type": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/dcae.capabilities.stream.subscribe"
+              }
+            },
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "http://135.91.225.81:8080",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.cdapApp",
+              "id":
+                "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.dcae.nodes.cdapApp"
+            },
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "30d0b4f4-efc5-424a-9d26-6d7843a0971d/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.cdapApp.Supplement",
+          "id": 0
+        },
+        "type": { "name": "tosca.dcae.nodes.cdapApp.Supplement" }
+      },
+      {
+        "name": "enrich",
+        "description":
+          "/sdc/v1/catalog/resources/8743b27b-f01e-4b17-a306-37efd42983d0/artifacts/c96f3ffd-516c-470b-ab7c-ced64fb244f0",
+        "id": "8743b27b-f01e-4b17-a306-37efd42983d0",
+        "nid": "n.1517823228454.2",
+        "capabilities": [
+          {
+            "name": "stream_subscribe_0",
+            "type": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "properties": [
+              {
+                "assignment": { "value": "VES_specification" },
+                "name": "format",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "IGNORE" },
+                "name": "route",
+                "type": "string"
+              },
+              {
+                "assignment": { "value": "5.28.4" },
+                "name": "version",
+                "type": "string"
+              }
+            ]
+          },
+          {
+            "name": "feature",
+            "type": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            }
+          }
+        ],
+        "requirements": [
+          {
+            "capability": {
+              "name": "dcae.capabilities.stream.subscribe",
+              "id": "template.yaml/dcae.capabilities.stream.subscribe"
+            },
+            "node_filter": {
+              "capabilities": [
+                {
+                  "dcae.capabilities.stream.subscribe": {
+                    "properties": [
+                      { "format": [{ "equal": "VES_specification" }] },
+                      { "version": [{ "equal": "5.28.4" }] }
+                    ]
+                  }
+                }
+              ]
+            },
+            "name": "stream_publish_0",
+            "relationship": { "type": "dcae.relationships.rework_connected_to" }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.cdapHost",
+              "id": "template.yaml/dcae.capabilities.cdapHost"
+            },
+            "name": "host",
+            "relationship": {
+              "type": "dcae.relationships.component_contained_in"
+            }
+          },
+          {
+            "capability": {
+              "name": "dcae.capabilities.composition.host",
+              "id": "template.yaml/dcae.capabilities.composition.host"
+            },
+            "name": "composition"
+          },
+          {
+            "occurrences": [0, "UNBOUNDED"],
+            "node": "tosca.nodes.Root",
+            "capability": {
+              "name": "tosca.capabilities.Node",
+              "id": "template.yaml/tosca.capabilities.Node"
+            },
+            "name": "dependency",
+            "relationship": { "type": "tosca.relationships.DependsOn" }
+          }
+        ],
+        "properties": [
+          {
+            "assignment": {
+              "value":
+                "com.att.ecomp.dcae.eventproc.cdap.common.processors.Catalog,com.att.sa.highlandPark.topoTools.HpTopoDbObjectCatalog,com.att.sa.highlandPark.topoTools.HpTopoDbProcessors,com.att.gfp.dcae.eventProcessor.Catalog"
+            },
+            "name": "defaultCatalogs",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "defaultObjects" } },
+            "name": "defaultObjects",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "Enrich Microservice" },
+            "name": "description",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "dmaapConsumerGrp" } },
+            "name": "dmaapConsumerGrp",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "" },
+            "name": "eventFactory",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"processing\":[{\"phase\":\"enrich\",\"filter\":{\"class\":\"Assigned\",\"field\":\"event.commonEventHeader.sourceName\",\"emtpyIsAssigned\":false},\"processors\":[{\"class\":\"StringTransform\",\"value\":\"${event.commonEventHeader.sourceName}\",\"toField\":\"searchString\",\"targetCase\":\"lower\"},{\"class\":\"EventProcessorMetric\",\"metric\":\"in.events\"},{\"class\":\"LogText\",\"logLevel\":\"WARN\",\"logText\":\"Alarm_EnrichmentStartingfor${hp.tag}\"},{\"class\":\"TopoSearch\",\"searchField\":\"oid\",\"searchValue\":\"${searchString}\",\"updates\":{\"event.commonEventHeader.sourceName\":\"${ptnii_name}\",\"event.commonEventHeader.sourceId\":\"${vserver_id}\",\"event.commonEventHeader.reportingEntityName\":\"${vnf_name}\",\"event.commonEventHeader.reportingEntityId\":\"${vnf_id}\",\"event.commonEventHeader.internalHeaderFields.equipmentType\":\"${equip_type}\",\"event.commonEventHeader.internalHeaderFields.provStatus\":\"${prov_status}\",\"event.commonEventHeader.internalHeaderFields.inMaint\":\"${in_maint}\",\"event.commonEventHeader.internalHeaderFields.tenantName\":\"${tenant_name}\",\"event.commonEventHeader.internalHeaderFields.eventSourceHostname\":\"${hostname}\",\"isEnriched\":true}},{\"class\":\"Set\",\"updates\":{\"event.preCorrelationAging\":\"${preCorrelationAging}\",\"event.prepublishAging\":\"${prepublishAging}\"}},{\"class\":\"Clear\",\"fields\":[\"searchString\"]},{\"class\":\"RunPhase\",\"phase\":\"enrich_publish\"}]}]}"
+            },
+            "name": "json",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": { "get_input": "monitorThreads" } },
+            "name": "monitorThreads",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "enrichMS" },
+            "name": "name",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "enrich" },
+            "name": "phases.enrich.phaseName",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": ".*" },
+            "name": "phases.enrich.streamPattern",
+            "type": "string"
+          },
+          {
+            "assignment": {
+              "value":
+                "{\"phase\":\"enrich_publish\",\"processors\":[{\"class\":\"EventProcessorMetric\",\"metric\":\"out.events\"},{\"class\":\"SendEvent\",\"channel\":\"DCAE-ENRICH-EVENT-OUT\"}]}"
+            },
+            "name": "postConfig",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "vnfTypes.*" },
+            "name": "ruleKeyPattern",
+            "type": "string"
+          },
+          {
+            "assignment": { "value": "False" },
+            "name": "startNoChannels",
+            "type": "string"
+          },
+          {
+            "default": "cdap_broker",
+            "assignment": {
+              "value": { "get_input": "connected_broker_dns_name" }
+            },
+            "name": "connected_broker_dns_name",
+            "type": "string",
+            "required": true
+          },
+          { "name": "jar_url", "type": "string", "required": true },
+          {
+            "assignment": {
+              "value": {
+                "get_property": ["SELF", "composition", "location_id"]
+              }
+            },
+            "name": "location_id",
+            "type": "string",
+            "required": true
+          },
+          {
+            "name": "service_component_type",
+            "type": "string",
+            "required": true
+          }
+        ],
+        "typeinfo": {
+          "itemId":
+            "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.dcae.nodes.cdapApp.Enrich",
+          "requirements": [
+            {
+              "node": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.stream.subscribe"
+              },
+              "capability": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.stream.subscribe"
+              },
+              "name": "stream_publish_0",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/stream_publish_0",
+              "relationship": {
+                "type": "dcae.relationships.rework_connected_to"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.cdapHost"
+              },
+              "capability": {
+                "name": "dcae.capabilities.cdapHost",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.cdapHost"
+              },
+              "name": "host",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/host",
+              "relationship": {
+                "type": "dcae.relationships.component_contained_in"
+              }
+            },
+            {
+              "node": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.composition.host"
+              },
+              "capability": {
+                "name": "dcae.capabilities.composition.host",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.composition.host"
+              },
+              "name": "composition",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/composition"
+            },
+            {
+              "occurrences": [0, "UNBOUNDED"],
+              "node": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.capabilities.Node"
+              },
+              "capability": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.capabilities.Node"
+              },
+              "name": "dependency",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/dependency",
+              "relationship": { "type": "tosca.relationships.DependsOn" }
+            }
+          ],
+          "capabilities": [
+            {
+              "name": "stream_subscribe_0",
+              "type": {
+                "name": "dcae.capabilities.stream.subscribe",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/dcae.capabilities.stream.subscribe"
+              }
+            },
+            {
+              "name": "feature",
+              "type": {
+                "name": "tosca.capabilities.Node",
+                "id":
+                  "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.capabilities.Node"
+              }
+            }
+          ],
+          "catalogId": 0,
+          "catalog": "http://135.91.225.81:8080",
+          "hierarchy": [
+            {
+              "name": "tosca.dcae.nodes.cdapApp",
+              "id":
+                "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.dcae.nodes.cdapApp"
+            },
+            {
+              "name": "tosca.dcae.nodes.Root",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.dcae.nodes.Root"
+            },
+            {
+              "name": "tosca.nodes.Root",
+              "description":
+                "The TOSCA Node Type all other TOSCA base Node Types derive from",
+              "id": "8743b27b-f01e-4b17-a306-37efd42983d0/tosca.nodes.Root"
+            }
+          ],
+          "name": "tosca.dcae.nodes.cdapApp.Enrich",
+          "id": 0
+        },
+        "type": { "name": "tosca.dcae.nodes.cdapApp.Enrich" }
+      }
+    ],
+    "relations": [
+      {
+        "n1": "n.1520766712715.7",
+        "name1": "foi",
+        "n2": "n.1520766711386.5",
+        "name2": "topic1",
+        "meta": {
+          "n1": "n.1520766712715.7",
+          "p1": "stream_publish_0",
+          "relationship": ["foi", null, "stream_publish_0"],
+          "n2": "n.1520766711386.5",
+          "p2": "topic"
+        }
+      },
+      {
+        "n1": "n.1520766712715.7",
+        "name1": "foi",
+        "n2": "n.1520766712709.6",
+        "name2": "feed0",
+        "meta": {
+          "n1": "n.1520766712715.7",
+          "p1": "stream_publish_0",
+          "n2": "n.1520766712709.6",
+          "p2": "feed",
+          "relationship": [
+            "foi",
+            "dcae.relationships.publish_files",
+            "stream_publish_0"
+          ]
+        }
+      },
+      {
+        "n1": "n.1520766711370.3",
+        "name1": "componentSpec_docker_map",
+        "n2": "n.1520766711379.4",
+        "name2": "feed0",
+        "meta": {
+          "n1": "n.1520766711370.3",
+          "p1": "stream_subscribe_0",
+          "n2": "n.1520766711379.4",
+          "p2": "feed",
+          "relationship": [
+            "componentSpec_docker_map",
+            "dcae.relationships.subscribe_to_files",
+            "stream_subscribe_0"
+          ]
+        }
+      },
+      {
+        "n1": "n.1520766711370.3",
+        "name1": "componentSpec_docker_map",
+        "n2": "n.1520766711386.5",
+        "name2": "topic1",
+        "meta": {
+          "n1": "n.1520766711370.3",
+          "p1": "stream_publish_0",
+          "n2": "n.1520766711386.5",
+          "p2": "topic",
+          "relationship": [
+            "componentSpec_docker_map",
+            "dcae.relationships.publish_events",
+            "stream_publish_0"
+          ]
+        }
+      }
+    ],
+    "inputs": [],
+    "outputs": []
+  }
+}
diff --git a/public/cypress/fixtures/doneSaveEditSimpleCopy.json b/public/cypress/fixtures/doneSaveEditSimpleCopy.json
new file mode 100644
index 0000000..cf6344c
--- /dev/null
+++ b/public/cypress/fixtures/doneSaveEditSimpleCopy.json
@@ -0,0 +1,21 @@
+{
+  "version": "4.1",
+  "eventType": "syslogFields",
+  "description": "newRule",
+  "uid": "f620724b-7170-43e1-8a8b-55e98cabe658",
+  "phase": "sto2",
+  "condition": null,
+  "actions": [
+    {
+      "actionType": "copy",
+      "from": {
+        "regex": "",
+        "state": "closed",
+        "values": [{ "value": "" }, { "value": "" }],
+        "value": "aB"
+      },
+      "target": "event.commonEventHeader.domain",
+      "id": "296bcdd0-1d20-11e8-a96d-298fbe0cb0fd"
+    }
+  ]
+}
diff --git a/public/cypress/fixtures/doneSaveSimpleLogText.json b/public/cypress/fixtures/doneSaveSimpleLogText.json
new file mode 100644
index 0000000..be83753
--- /dev/null
+++ b/public/cypress/fixtures/doneSaveSimpleLogText.json
@@ -0,0 +1,26 @@
+{
+  "version": "4.1",
+  "eventType": "syslogFields",
+  "description": "newRule2",
+  "uid": "57612d40-c66d-4a5a-95c3-0165564f837d",
+  "phase": "phase_1",
+  "condition": null,
+  "actions": [
+    {
+      "logText": {
+        "name": "AAA",
+        "level": "BBB",
+        "text": "ABC"
+      },
+      "actionType": "log text",
+      "from": {
+        "regex": "",
+        "state": "closed",
+        "values": [{ "value": "" }, { "value": "" }],
+        "value": ""
+      },
+      "target": "",
+      "id": "e340ab50-423b-11e8-94f2-3dd2f158c314"
+    }
+  ]
+}
diff --git a/public/cypress/fixtures/doneSaveSimpleMap.json b/public/cypress/fixtures/doneSaveSimpleMap.json
new file mode 100644
index 0000000..eb637be
--- /dev/null
+++ b/public/cypress/fixtures/doneSaveSimpleMap.json
@@ -0,0 +1,29 @@
+{
+  "version": "4.1",
+  "eventType": "syslogFields",
+  "description": "newRule2",
+  "uid": "57612d40-c66d-4a5a-95c3-0165564f837d",
+  "phase": "phase_1",
+  "condition": null,
+  "actions": [
+    {
+      "map": {
+        "default": "",
+        "haveDefault": false,
+        "values": [
+          { "key": "Key1", "value": "Key1" },
+          { "key": "Key2", "value": "Key2" }
+        ]
+      },
+      "actionType": "map",
+      "from": {
+        "regex": "",
+        "state": "closed",
+        "values": [{ "value": "" }, { "value": "" }],
+        "value": "test"
+      },
+      "target": "event.commonEventHeader.eventId",
+      "id": "e340ab50-423b-11e8-94f2-3dd2f158c314"
+    }
+  ]
+}
diff --git a/public/cypress/integration/e2e/e2eWithIntegration-spec.ts b/public/cypress/integration/e2e/e2eWithIntegration-spec.ts
index 459a7de..949e966 100644
--- a/public/cypress/integration/e2e/e2eWithIntegration-spec.ts
+++ b/public/cypress/integration/e2e/e2eWithIntegration-spec.ts
@@ -3,7 +3,6 @@
     .toString(36)
     .substr(2, 7);
 const NODE_NAME = randomNodeName();
-
 const serverGetDDLData = () => {
   return cy
     .server()
@@ -12,14 +11,9 @@
       Cypress.env('backendUrl') + '/getResourcesByMonitoringTemplateCategory'
     )
     .as('templateAPi')
-    .route(
-      'GET',
-      Cypress.env('backendUrl') +
-        '/service/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a'
-    )
+    .route('GET', Cypress.env('backendUrl') + '/service/**')
     .as('vfniListAPi');
 };
-
 const saveAndDoneHttp = () => {
   cy.server();
   cy
@@ -29,7 +23,6 @@
     })
     .as('doneSaveCopyRule');
 };
-
 const createNewMC = () => {
   cy
     .get('input[data-tests-id="nameMc"]')
@@ -64,18 +57,33 @@
     .click()
     .wait('@newMC');
 };
-
 import { buttonCreateMC } from '../mocks/homePage-spec';
 import {
   selectVersionAndTypeAndAddFirstRule,
-  fillRuleDecription,
+  fillRuleDescription,
   addCopyAction,
   editFirstRule
 } from '../mocks/ruleEngine-spec';
+describe('DCAED - forntend e2e and inagration test ', () => {
+  // context(('home page'), () => {   it.only('should open env', () => {     cy
+  // .visit('https://www.e-access.att.com/DevOps02/sdc1/portal#!/dashboard')
+  // .get(':nth-child(2) > :nth-child(1) > [border="0"][width="100%"] >
+  // :nth-child(1) > :nt' +           'h-child(1) > td > input') .type('ym903w')
+  //     .get(':nth-child(3) > td > input') .type('Apple1qazxsw2')
+  // .get('[border="0"][width="100%"] > :nth-child(1) > :nth-child(5) > td >
+  // input')       .click()       .get('#srv_successok > input')       .click()
+  //    .get(':nth-child(1) > .w-sdc-dashboard-card-new-content')
+  // .trigger('mouseover') .get('button[data-tests-id="createServiceButton"]')
+  //   .click() .get('input[data-tests-id="name"]')
+  // .type(`DCAE_SRV_${NODE_NAME}`)
+  // .get('select[data-tests-id="selectGeneralCategory"]') .select('Mobility')
+  //   .get('textarea[data-tests-id="description"]') .type('bla')
+  // .get('input[data-tests-id="projectCode"]') .type('att01')
+  // .get('button[data-tests-id="create/save"]') .click()
+  // .get('div[data-tests-id="CompositionLeftSideMenu"]') .click()   }); });
 
-describe('DCAED - forntend e2e and inagration test', () => {
-  context('Empty Monitoring Configuration list for service', () => {
-    it('Loads', () => {
+  context('Empty Monitoring Configuration list for service ', () => {
+    it(' Loads ', () => {
       cy.homePage();
     });
   });
@@ -96,50 +104,24 @@
         .and('be.disabled');
     });
 
-    it('click on create mc - more then one tab should be visible', () => {
-      createNewMC();
-      cy
-        .get('ul[p-tabviewnav]')
-        .children()
-        .should($el => {
-          expect($el.length).to.be.greaterThan(1);
-        });
-    });
-
-    it('should enter rule engine in map tab and create new rule', () => {
-      createNewMC();
-      cy
-        .get('#ui-tabpanel-1-label')
-        .should('contain', 'map')
-        .click();
-      selectVersionAndTypeAndAddFirstRule();
-      fillRuleDecription('newRule');
-      addCopyAction();
-      saveAndDoneHttp();
-      cy.get('button[data-tests-id="btnDone"]').click();
-      cy
-        .wait('@doneSaveCopyRule')
-        .get('div[data-tests-id="ruleElement"]')
-        .should('be.visible')
-        .then(function($lis) {
-          expect($lis).to.have.length(1);
-          expect($lis.eq(0)).to.contain('newRule');
-        });
-      editFirstRule();
-      fillRuleDecription('LiavRule');
-      saveAndDoneHttp();
-      cy
-        .get('button[data-tests-id="btnSave"]')
-        .click()
-        .wait('@doneSaveCopyRule')
-        .get('a[data-tests-id="btnBackRule"]')
-        .click()
-        .get('div[data-tests-id="ruleElement"]')
-        .should('be.visible')
-        .then(function($lis) {
-          expect($lis).to.have.length(1);
-          expect($lis.eq(0)).to.contain('LiavRule');
-        });
-    });
+    // it('click on create mc - more then one tab should be visible', () => {
+    // createNewMC();   cy     .get('ul[p-tabviewnav]')     .children()
+    // .should($el => {       expect($el.length).to.be.greaterThan(1);     }); });
+    // it('should enter rule engine in map tab and create new rule', () => {
+    // createNewMC();   cy     .get('#ui-tabpanel-1-label')     .should('contain',
+    // 'map')     .click();   selectVersionAndTypeAndAddFirstRule();
+    // fillRuleDescription('newRule');   addCopyAction();   saveAndDoneHttp();
+    // cy.get('button[data-tests-id="btnDone"]').click();   cy
+    // .wait('@doneSaveCopyRule')     .get('div[data-tests-id="ruleElement"]')
+    // .should('be.visible')     .then(function($lis) {
+    // expect($lis).to.have.length(1);
+    // expect($lis.eq(0)).to.contain('newRule');     });   editFirstRule();
+    // fillRuleDescription('LiavRule');   saveAndDoneHttp();   cy
+    // .get('button[data-tests-id="btnSave"]')     .click()
+    // .wait('@doneSaveCopyRule')     .get('a[data-tests-id="btnBackRule"]')
+    // .click()     .get('div[data-tests-id="ruleElement"]')
+    // .should('be.visible')     .then(function($lis) {
+    // expect($lis).to.have.length(1);
+    // expect($lis.eq(0)).to.contain('LiavRule');     }); });
   });
 });
diff --git a/public/cypress/integration/mocks/errorDialog-spec.ts b/public/cypress/integration/mocks/errorDialog-spec.ts
index 9141ab2..e879a9f 100644
--- a/public/cypress/integration/mocks/errorDialog-spec.ts
+++ b/public/cypress/integration/mocks/errorDialog-spec.ts
@@ -10,12 +10,18 @@
     });
 
     it('Simulate error dialog is close by cancel button', () => {
-      cy.get('button[data-tests-id="error-cancel"]').click();
+      cy
+        .get('button[data-tests-id="error-cancel"]')
+        .first()
+        .click({ force: true });
       cy.get('.ui-dialog').should('not.be.visible');
     });
 
     it('Simulate error dialog is close by X button', () => {
-      cy.get('.ui-dialog-titlebar-icon').click();
+      cy
+        .get('span[data-tests-id="error-cancel-icon"]')
+        .first()
+        .click({ force: true });
       cy.get('.ui-dialog').should('not.be.visible');
     });
   });
diff --git a/public/cypress/integration/mocks/generalPage-spec.ts b/public/cypress/integration/mocks/generalPage-spec.ts
index 1297de8..58a4bc8 100644
--- a/public/cypress/integration/mocks/generalPage-spec.ts
+++ b/public/cypress/integration/mocks/generalPage-spec.ts
@@ -1,4 +1,55 @@
 describe('General Page - E2E test flow with mock', () => {
+  describe('Check Boolean DDL', () => {
+    beforeEach(() => {
+      cy.httpGenerateMappingRulesFileName();
+      cy.httpGetDDLData();
+      cy.httpCreateNewMcWithBooleanDDL();
+      cy.getMCListEmpty();
+      cy.homePage();
+      cy.get('button[data-tests-id="btn-create-mc"]').click();
+    });
+
+    it(
+      'Check boolean DDL with value undefined - using true, true - using true and false' +
+        ' - using false.',
+      () => {
+        cy.fillNewMcForm();
+        cy
+          .get('button[data-tests-id="createMonitoring"]')
+          .as('createButton')
+          .not('[disabled]')
+          .should('not.contain', 'Disabled');
+
+        cy.httpCreateNewMcWithBooleanDDL();
+        cy.emptyRuleEngine('Type1');
+
+        cy.get('@createButton').click();
+        cy
+          .get('#ui-tabpanel-1-label')
+          .should('contain', 'map')
+          .click();
+        cy
+          .get('button[data-tests-id="setting-gear"]')
+          .should('be.visible')
+          .first()
+          .click({ multiple: true });
+
+        cy
+          .get('.map-setting-list #mappingType > .field-text')
+          .should('have.value', 'multiple');
+        cy
+          .get('.map-setting-list > form > #valueUndefined > select')
+          .should('have.value', 'true');
+        cy
+          .get('.map-setting-list > form > #valueTrue > select')
+          .should('have.value', 'true');
+        cy
+          .get('.map-setting-list > form > #valueFalse > select')
+          .should('have.value', 'false');
+      }
+    );
+  });
+
   describe('Create new MC', () => {
     beforeEach(() => {
       cy.httpGetDDLData();
@@ -14,6 +65,39 @@
         .and('be.disabled');
     });
 
+    it('After submit advenced setting description exist in first input', () => {
+      cy.fillNewMcForm();
+      cy
+        .get('button[data-tests-id="createMonitoring"]')
+        .as('createButton')
+        .not('[disabled]')
+        .should('not.contain', 'Disabled');
+
+      cy.httpCreateNewMc();
+      cy.emptyRuleEngine('Type1');
+
+      cy.get('@createButton').click();
+      cy
+        .get('#ui-tabpanel-1-label')
+        .should('contain', 'map')
+        .click();
+      cy
+        .get('button[data-tests-id="setting-gear"]')
+        .should('be.visible')
+        .first()
+        .click({ multiple: true });
+
+      cy
+        .get('.map-setting-list #Type1 .help-description')
+        .trigger('mouseenter')
+        .get('.ui-tooltip')
+        .should('be.visible')
+        .should(
+          'contain',
+          'CSV to VES mapping, from the file to generate multiple events or single event'
+        );
+    });
+
     it('Fill form then click to submit verify setting button and constrain ddl', () => {
       cy.fillNewMcForm();
       cy
@@ -42,6 +126,29 @@
     });
   });
 
+  describe('Flow diagram', () => {
+    beforeEach(() => {
+      cy.httpGetDDLData();
+      cy.getMCListEmpty();
+      cy.homePage();
+      cy.get('button[data-tests-id="btn-create-mc"]').click();
+      cy.fillNewMcForm();
+      cy.httpCreateNewMc();
+      cy.get('button[data-tests-id="createMonitoring"]').click();
+    });
+
+    it.only('should flow diagram need to exist', () => {
+      cy.get('#diagram').should('be.visible');
+    });
+
+    it('should flow diagram need to contain 4 connections', () => {
+      cy
+        .get('#diagram line')
+        .its('length')
+        .should('be.equal', 4);
+    });
+  });
+
   describe('Tabs after MC created', () => {
     beforeEach(() => {
       cy.httpGetDDLData();
@@ -50,7 +157,6 @@
       cy.get('button[data-tests-id="btn-create-mc"]').click();
       cy.fillNewMcForm();
       cy.httpCreateNewMc();
-      cy.emptyRuleEngine('Type1');
       cy.get('button[data-tests-id="createMonitoring"]').click();
     });
 
diff --git a/public/cypress/integration/mocks/homePage-spec.ts b/public/cypress/integration/mocks/homePage-spec.ts
index 2889390..5f96c98 100644
--- a/public/cypress/integration/mocks/homePage-spec.ts
+++ b/public/cypress/integration/mocks/homePage-spec.ts
@@ -6,11 +6,11 @@
 };
 
 export const tableItems = () => {
-  return cy.get('tr[data-tests-id="monitoringComponentTableItems"]');
+  return cy.get('datatable-row-wrapper');
 };
 
-export const tableHeaders = () => {
-  return cy.get('tr[data-tests-id="monitoringComponentTableHeaders"]');
+export const monitoringComponentTable = () => {
+  return cy.get('ngx-datatable[data-tests-id="monitoringComponentTable"]');
 };
 export const tableItemsDeleteButton = () => {
   return cy.get('button[data-tests-id="tableItemsButtonDelete"]');
@@ -64,9 +64,9 @@
     });
 
     it("Shouldn't have create table with headers", () => {
-      tableHeaders().should('not.be.visible');
+      monitoringComponentTable().should('not.be.visible');
     });
-    it("Shouldn't have create table without items", () => {
+    it("Shouldn't have create table with items", () => {
       buttonCreateMC()
         .get('div[data-tests-id="new-monitoring-title"]')
         .should('contain', 'Monitoring');
@@ -100,20 +100,13 @@
     });
 
     it('Should have create table with headers', () => {
-      tableHeaders().should('be.visible');
+      monitoringComponentTable().should('be.visible');
     });
     it('Should have create table with items', () => {
       tableItems().should('have.length', NUMBER_OF_ITEMS);
     });
   });
 
-  describe('MC List Edit Tests', () => {
-    beforeEach(() => {
-      cy.getMCList();
-      cy.homePage();
-    });
-  });
-
   describe('MC List Delete Tests', () => {
     beforeEach(() => {
       cy.getMCList();
@@ -126,26 +119,34 @@
       tableItemsDeleteButton().should('be.visible');
       tableItemsInfoButton().should('not.be.visible');
     });
-    it('Mouse hover over item, call delete and remove not submitted (call delete without blueprint api)', () => {
-      tableItems().should('have.length', NUMBER_OF_ITEMS);
-      doHoverOverFirstLine();
-      tableItemsDeleteButton()
-        .should('be.visible')
-        .click({ force: true });
-      popupGetDeleteBtn().click({ force: true });
-      tableItems().should('have.length', NUMBER_OF_ITEMS - 1);
-    });
-    it('Mouse hover over item, call delete and remove submitted (call delete with blueprint api)', () => {
-      tableItems()
-        .should('have.length', NUMBER_OF_ITEMS)
-        .last()
-        .trigger('mouseover');
-      tableItemsDeleteButton()
-        .should('be.visible')
-        .click({ force: true });
-      popupGetDeleteBtn().click({ force: true });
-      tableItems().should('have.length', NUMBER_OF_ITEMS - 1);
-    });
+    it(
+      'Mouse hover over item, call delete and remove not submitted (call delete without' +
+        ' blueprint api)',
+      () => {
+        tableItems().should('have.length', NUMBER_OF_ITEMS);
+        doHoverOverFirstLine();
+        tableItemsDeleteButton()
+          .should('be.visible')
+          .click({ force: true });
+        popupGetDeleteBtn().click({ force: true });
+        tableItems().should('have.length', NUMBER_OF_ITEMS - 1);
+      }
+    );
+    it(
+      'Mouse hover over item, call delete and remove submitted (call delete with bluepr' +
+        'int api)',
+      () => {
+        tableItems()
+          .should('have.length', NUMBER_OF_ITEMS)
+          .last()
+          .trigger('mouseover');
+        tableItemsDeleteButton()
+          .should('be.visible')
+          .click({ force: true });
+        popupGetDeleteBtn().click({ force: true });
+        tableItems().should('have.length', NUMBER_OF_ITEMS - 1);
+      }
+    );
     it('Mouse hover over item, call delete and cancelOperation', () => {
       tableItems().should('have.length', NUMBER_OF_ITEMS);
       doHoverOverFirstLine();
@@ -171,6 +172,7 @@
 
   describe('Successfully Entry Home Page Monitoring Configuration', () => {
     beforeEach(() => {
+      cy.httpGetDDLData();
       cy.getMCListEmpty();
       cy.homePage();
     });
@@ -190,12 +192,17 @@
     it('Buttons Functionality Assertion', () => {
       buttonCreateMC()
         .click()
-        .get('div[data-tests-id="new-monitoring-title"]')
+        .get('div[data-tests-id="new-monitorying-titie"]')
         .should('contain', 'Monitoring');
     });
   });
 
   describe('Not Auth Entry Home Page Monitoring Configuration', () => {
+    beforeEach(() => {
+      cy.httpGetDDLData();
+      cy.getMCListEmpty();
+    });
+
     it('Buttons disabled when user not owner', () => {
       cy.sdcIsOwnerFalse();
       navigateButtonDisabled();
diff --git a/public/cypress/integration/mocks/importPage-spec.ts b/public/cypress/integration/mocks/importPage-spec.ts
index 7af904e..446409c 100644
--- a/public/cypress/integration/mocks/importPage-spec.ts
+++ b/public/cypress/integration/mocks/importPage-spec.ts
@@ -5,13 +5,10 @@
       method: 'GET',
       url:
         Cypress.env('backendUrl') +
-        '/SERVICE/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/0.1/getVfcmtsForMigration',
+        '/SERVICES/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/0.1/getVfcmtsForMigration',
       response: 'fixture:importVfcmt'
     })
-    .as('importVfcmtList')
-    .visit(
-      'http://localhost:4300/#/main/SERVICE/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/0.1/import'
-    );
+    .as('importVfcmtList');
 };
 
 const getVfcmtRefData = data => {
@@ -93,7 +90,11 @@
 describe('Import Page', () => {
   context('First step - get vfcmts list and pick one', () => {
     beforeEach(() => {
+      cy.httpGetDDLData();
+      cy.getMCListEmpty();
+      cy.homePage();
       loadVfcmtList();
+      cy.get('button[data-tests-id="btn-import-mc"]').click();
     });
 
     it('should have values in ddl', () => {
@@ -129,7 +130,11 @@
 
   context('second step - fill fileds according to server response', () => {
     beforeEach(() => {
+      cy.httpGetDDLData();
+      cy.getMCListEmpty();
+      cy.homePage();
       loadVfcmtList();
+      cy.get('button[data-tests-id="btn-import-mc"]').click();
     });
 
     it('get flow type true and service is match to context service', () => {
@@ -208,7 +213,11 @@
 
   context('final step - import vfcmt and getting cdump for tabs', () => {
     beforeEach(() => {
+      cy.httpGetDDLData();
+      cy.getMCListEmpty();
+      cy.homePage();
       loadVfcmtList();
+      cy.get('button[data-tests-id="btn-import-mc"]').click();
       getVfcmtRefData({
         serviceUuid: '06c7d927-4e2f-47e1-a29d-b6ed229ebc0a',
         name: 'test',
diff --git a/public/cypress/integration/mocks/ruleEngine-spec.ts b/public/cypress/integration/mocks/ruleEngine-spec.ts
index 9a75b87..d2c0b69 100644
--- a/public/cypress/integration/mocks/ruleEngine-spec.ts
+++ b/public/cypress/integration/mocks/ruleEngine-spec.ts
@@ -2,6 +2,14 @@
   return cy.get('select[data-tests-id="mappingDdl"]');
 };
 
+export const getExistRulesList = () => {
+  return cy.get('option[data-tests-id="templateOptionsExist"]');
+};
+
+export const getNotExistRulesList = () => {
+  return cy.get('option[data-tests-id="templateOptionsNotExist"]');
+};
+
 export const selectVersionAndTypeAndAddFirstRule = () => {
   return cy
     .get('select[data-tests-id="selectVersion"]')
@@ -12,13 +20,55 @@
     .click();
 };
 
-export const fillRuleDecription = text => {
+export const fillRuleDescription = text => {
   return cy
     .get('input[data-tests-id="inputDescription"]')
     .clear()
     .type(text);
 };
 
+export const addMapAndDeleteRowAction = () => {
+  cy.get('select[data-tests-id="selectAction"]').select('map');
+  cy.get('button[data-tests-id="btnAddAction"]').click();
+  // fill map action
+  cy
+    .get('input[data-tests-id="valueInput"]')
+    .first()
+    .type('B')
+    .should('have.value', 'B');
+
+  return cy
+    .get('input[data-tests-id="key"]')
+    .type('Key1')
+    .should('have.value', 'Key1')
+    .get('input[data-tests-id="value"]')
+    .type('Key1')
+    .should('have.value', 'Key1')
+    .get('button[data-tests-id="btn-add-row"]')
+    .click()
+    .get('input[data-tests-id="key"]')
+    .last()
+    .type('Key2')
+    .should('have.value', 'Key2')
+    .get('input[data-tests-id="value"]')
+    .last()
+    .type('Key2')
+    .should('have.value', 'Key2')
+    .get('button[data-tests-id="btn-add-row"]')
+    .click()
+    .get('input[data-tests-id="key"]')
+    .last()
+    .type('Key3')
+    .should('have.value', 'Key3')
+    .get('input[data-tests-id="value"]')
+    .last()
+    .type('Key3')
+    .should('have.value', 'Key3')
+    .get('button[data-tests-id="btn-remove-row"]')
+    .last()
+    .click();
+};
+
 export const addCopyAction = () => {
   return cy
     .get('select[data-tests-id="selectAction"]')
@@ -27,6 +77,7 @@
     .click()
     .get('input[data-tests-id="valueInput"]')
     .type('A')
+    .should('have.value', 'A')
     .get('span[data-tests-id="openTargetTree"]')
     .click()
     .get('.bottom-select')
@@ -56,11 +107,71 @@
     .click();
 };
 
-export const translateValue = () => {
-  return '{"processing":[{"phase":"snmp_map","processors":[{"array":"varbinds","datacolumn":"varbind_value","keycolumn":"varbind_oid","class":"SnmpConvertor"},{"phase":"sto2","class":"RunPhase"}]},{"phase":"sto2","processors":[{"updates":{"event.commonEventHeader.domain":"a"},"class":"Set"}]},{"phase":"sto2","processors":[{"phase":"map_publish","class":"RunPhase"}]}]}';
+export const editLastRule = () => {
+  return cy
+    .get('div[data-tests-id="ruleElement"]')
+    .last()
+    .trigger('mouseover')
+    .get('button[data-tests-id="editRule"]')
+    .should('be.visible')
+    .click();
 };
 
+export const deleteFirstRule = () => {
+  cy
+    .get('div[data-tests-id="ruleElement"]')
+    .first()
+    .trigger('mouseover')
+    .get('button[data-tests-id="deleteRule"]')
+    .should('be.visible')
+    .click()
+    .get('div[data-tests-id="delete-popup"]');
+
+  cy.deleteRule();
+  return cy.get('button[data-tests-id="btnDelete"]').click();
+};
+
+export const translateValue = () => {
+  return (
+    '{"processing":[{"phase":"snmp_map","processors":[{"array":"varbinds","datacolumn' +
+    '":"varbind_value","keycolumn":"varbind_oid","class":"SnmpConvertor"},{"phase":"s' +
+    'to2","class":"RunPhase"}]},{"phase":"sto2","processors":[{"updates":{"event.comm' +
+    'onEventHeader.domain":"a"},"class":"Set"}]},{"phase":"sto2","processors":[{"phas' +
+    'e":"map_publish","class":"RunPhase"}]}]}'
+  );
+};
+const NUMBER_OF_EXIST_ITEMS = 3;
+const NUMBER_OF_NOT_EXIST_ITEMS = 16;
 describe('Rule engine - E2E test flow with mock', () => {
+  describe('Checking rules exist and not exist separation', () => {
+    beforeEach(() => {
+      cy.httpGenerateMappingRulesFileName();
+      cy.httpGetDDLData();
+      cy.getMCListEmpty();
+      cy.homePage();
+      cy.get('button[data-tests-id="btn-create-mc"]').click();
+      cy.fillNewMcForm();
+      cy.httpCreateNewMc();
+      cy.emptyRuleEngine('Type1');
+      cy.get('button[data-tests-id="createMonitoring"]').click();
+      cy
+        .get('#ui-tabpanel-1-label')
+        .should('contain', 'map')
+        .click();
+    });
+    it('In exist group contain 3 visible options and not exist 16 visible', () => {
+      mappingTragetDDL()
+        .should('be.visible')
+        .contains('json');
+      getExistRulesList()
+        .not('[hidden]')
+        .should('have.length', NUMBER_OF_EXIST_ITEMS);
+      getNotExistRulesList()
+        .not('[hidden]')
+        .should('have.length', NUMBER_OF_NOT_EXIST_ITEMS);
+    });
+  });
+
   describe('Mapping target select', () => {
     beforeEach(() => {
       cy.httpGetDDLData();
@@ -82,25 +193,9 @@
         .should('be.visible')
         .contains('json');
     });
-
-    it('should page refrash after change select value in mapping target ddl', () => {
-      cy.httpTargetTree();
-      cy
-        .get('select[data-tests-id="selectVersion"]')
-        .select('4.1')
-        .get('select[data-tests-id="selectEventType"]')
-        .select('syslog')
-        .get('button[data-tests-id="btnAddFirstRule"]')
-        .should('be.visible');
-      cy.emptyRuleEngine('json');
-      mappingTragetDDL()
-        .select('json')
-        .get('select[data-tests-id="selectVersion"]')
-        .should('have.value', null);
-    });
   });
 
-  describe('Translate And Save Rule List', () => {
+  describe('Fill all available Actions', () => {
     beforeEach(() => {
       cy.httpGetDDLData();
       cy.getMCListEmpty();
@@ -117,7 +212,519 @@
         .click();
       cy.httpTargetTree();
       selectVersionAndTypeAndAddFirstRule();
-      fillRuleDecription('newRule');
+      fillRuleDescription('newRule');
+    });
+
+    it('add copy action', () => {
+      addCopyAction();
+    });
+
+    it('add concat action', () => {
+      cy.get('select[data-tests-id="selectAction"]').select('concat');
+      cy.get('button[data-tests-id="btnAddAction"]').click();
+      // fill concat action
+      cy
+        .get('input[data-tests-id="valueInput"]')
+        .first()
+        .type('A')
+        .should('have.value', 'A');
+      cy
+        .get('input[data-tests-id="valueInput"]')
+        .last()
+        .type('B')
+        .should('have.value', 'B');
+      cy
+        .get('span[data-tests-id="openTargetTree"]')
+        .click()
+        .get('.bottom-select')
+        .should('be.visible')
+        .find('.toggle-children')
+        .first()
+        .click();
+
+      cy
+        .get('span[data-tests-id="targetNode"]')
+        .should(node => {
+          expect(node.eq(0)).to.contain('commonEventHeader');
+          expect(node.eq(1)).to.contain('domain');
+        })
+        .each(($el, index) => {
+          if (index === 1) {
+            cy.wrap($el).click();
+          }
+        });
+
+      cy
+        .get('input[data-tests-id="inputTarget"]')
+        .should('have.value', 'event.commonEventHeader.domain');
+    });
+
+    it('add map action', () => {
+      addMapAndDeleteRowAction();
+
+      cy
+        .get('span[data-tests-id="openTargetTree"]')
+        .click()
+        .get('.bottom-select')
+        .should('be.visible')
+        .find('.toggle-children')
+        .first()
+        .click();
+
+      cy
+        .get('span[data-tests-id="targetNode"]')
+        .should(node => {
+          expect(node.eq(0)).to.contain('commonEventHeader');
+          expect(node.eq(1)).to.contain('domain');
+        })
+        .each(($el, index) => {
+          if (index === 1) {
+            cy.wrap($el).click();
+          }
+        });
+
+      cy.get('input[data-tests-id="defaultCheckbox"]').click();
+      cy.get('input[data-tests-id="defaultInput"]').type('default value');
+
+      cy
+        .get('input[data-tests-id="inputTarget"]')
+        .should('have.value', 'event.commonEventHeader.domain');
+    });
+
+    it('add date-formatter action', () => {
+      cy.get('select[data-tests-id="selectAction"]').select('date formatter');
+      cy.get('button[data-tests-id="btnAddAction"]').click();
+
+      // fill date-formatter action Section 1
+      cy
+        .get('input[data-tests-id="valueInput"]')
+        .first()
+        .type('A')
+        .should('have.value', 'A')
+        .get('span[data-tests-id="openTargetTree"]')
+        .click()
+        .get('.bottom-select')
+        .should('be.visible')
+        .find('.toggle-children')
+        .first()
+        .click()
+        .get('span[data-tests-id="targetNode"]')
+        .should(node => {
+          expect(node.eq(0)).to.contain('commonEventHeader');
+          expect(node.eq(1)).to.contain('domain');
+        })
+        .each(($el, index) => {
+          if (index === 1) {
+            cy.wrap($el).click();
+          }
+        });
+      cy
+        .get('input[data-tests-id="inputTarget"]')
+        .should('have.value', 'event.commonEventHeader.domain');
+
+      // Section 2
+      cy
+        .get('input[data-tests-id="InputFromFormat"]')
+        .type('04/03/2018')
+        .should('have.value', '04/03/2018')
+        .get('input[data-tests-id="InputFromTimezone"]')
+        .type('11:50:00')
+        .should('have.value', '11:50:00')
+        .get('input[data-tests-id="InputToFormat"]')
+        .type('04/08/2018')
+        .should('have.value', '04/08/2018')
+        .get('input[data-tests-id="InputToTimezone"]')
+        .type('11:50:00')
+        .should('have.value', '11:50:00');
+    });
+
+    it('add conditional action', () => {
+      cy
+        .get('input[data-tests-id="isCondition"]')
+        .click()
+        .get('input[data-tests-id="left"]')
+        .type('ABC')
+        .should('have.value', 'ABC');
+
+      cy
+        .get('select[data-tests-id="selectOperator"]')
+        .select('startsWith')
+        .get('input[data-tests-id="right"]')
+        .type('A')
+        .should('have.value', 'A');
+
+      cy
+        .get('button[data-tests-id="addCondition"]')
+        .click()
+        .get('input[data-tests-id="left"]')
+        .last()
+        .type('DEF')
+        .should('have.value', 'DEF');
+
+      cy
+        .get('select[data-tests-id="selectOperator"]')
+        .last()
+        .select('endsWith')
+        .get('input[data-tests-id="right"]')
+        .last()
+        .type('F')
+        .should('have.value', 'F');
+
+      cy
+        .get('button[data-tests-id="addCondition"]')
+        .click()
+        .get('input[data-tests-id="left"]')
+        .last()
+        .type('HIJ')
+        .should('have.value', 'HIJ');
+
+      cy
+        .get('select[data-tests-id="selectOperator"]')
+        .last()
+        .select('equals')
+        .get('input[data-tests-id="right"]')
+        .last()
+        .type('HHH')
+        .should('have.value', 'HHH');
+
+      cy
+        .get('button[data-tests-id="RemoveCondition"]')
+        .last()
+        .click()
+        .get('button[data-tests-id="addConditionGroup"]')
+        .click();
+
+      // try to delete element (1 of 2 items in group)
+      cy
+        .get('button[data-tests-id="RemoveCondition"]')
+        .last()
+        .click()
+        .get('input[data-tests-id="left"]')
+        .eq(2)
+        .type('KLM')
+        .should('have.value', 'KLM');
+
+      cy
+        .get('select[data-tests-id="selectOperator"]')
+        .eq(2)
+        .select('notEqual')
+        .get('input[data-tests-id="right"]')
+        .eq(2)
+        .type('MMM')
+        .should('have.value', 'MMM')
+        .get('input[data-tests-id="left"]')
+        .last()
+        .type('NOP')
+        .should('have.value', 'NOP');
+
+      cy
+        .get('select[data-tests-id="selectOperator"]')
+        .last()
+        .select('contains')
+        .get('input[data-tests-id="right"]')
+        .last()
+        .type('PPP')
+        .should('have.value', 'PPP');
+
+      cy
+        .get('button[data-tests-id="addCondition"]')
+        .last()
+        .click()
+        .get('input[data-tests-id="left"]')
+        .last()
+        .type('QQQ')
+        .should('have.value', 'QQQ');
+
+      cy
+        .get('select[data-tests-id="selectOperator"]')
+        .last()
+        .select('endsWith')
+        .get('input[data-tests-id="right"]')
+        .last()
+        .type('Q')
+        .should('have.value', 'Q')
+        .get('button[data-tests-id="RemoveCondition"]')
+        .last()
+        .click();
+
+      cy
+        .get('button[data-tests-id="removeConditionNode"]')
+        .last()
+        .click();
+    });
+
+    it('add clear action', () => {
+      cy
+        .get('select[data-tests-id="selectAction"]')
+        .select('clear')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click()
+        .get('input[data-tests-id="valueInput"]')
+        .type('ABC')
+        .should('have.value', 'ABC');
+
+      cy
+        .get('button[data-tests-id="btnAddInput"]')
+        .click()
+        .get('input[data-tests-id="valueInput"]')
+        .last()
+        .type('DEA')
+        .should('have.value', 'DEA');
+
+      cy
+        .get('button[data-tests-id="btnDelete"]')
+        .first()
+        .click();
+    });
+
+    it('add replace text action', () => {
+      cy
+        .get('select[data-tests-id="selectAction"]')
+        .select('replace text')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click();
+
+      cy
+        .get('input[data-tests-id="valueInput"]')
+        .type('ABC')
+        .should('have.value', 'ABC');
+
+      cy
+        .get('input[data-tests-id="InputFindWhat"]')
+        .type('AAA')
+        .should('have.value', 'AAA');
+
+      cy
+        .get('input[data-tests-id="InputReplaceWith"]')
+        .type('BBB')
+        .should('have.value', 'BBB');
+    });
+
+    it('add log text action', () => {
+      cy
+        .get('select[data-tests-id="selectAction"]')
+        .select('log text')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click();
+
+      cy
+        .get('input[data-tests-id="InputLogText"]')
+        .type('ABC')
+        .should('have.value', 'ABC');
+
+      cy
+        .get('input[data-tests-id="InputLogName"]')
+        .type('AAA')
+        .should('have.value', 'AAA');
+
+      cy
+        .get('input[data-tests-id="InputLogLevel"]')
+        .type('BBB')
+        .should('have.value', 'BBB');
+    });
+
+    it('add log event action', () => {
+      cy
+        .get('select[data-tests-id="selectAction"]')
+        .select('log event')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click();
+
+      cy
+        .get('input[data-tests-id="InputLogTitle"]')
+        .type('Title test')
+        .should('have.value', 'Title test');
+    });
+  });
+
+  describe('rule and Actions CRUD Procedure', () => {
+    beforeEach(() => {
+      cy.httpGetDDLData();
+      cy.getMCListEmpty();
+      cy.homePage();
+      cy.get('button[data-tests-id="btn-create-mc"]').click();
+      cy.fillNewMcForm();
+      cy.httpCreateNewMc();
+      cy.emptyRuleEngine('Type1');
+      cy
+        .get('button[data-tests-id="createMonitoring"]')
+        .click()
+        .get('#ui-tabpanel-1-label')
+        .should('contain', 'map')
+        .click();
+      cy.httpTargetTree();
+      selectVersionAndTypeAndAddFirstRule();
+      fillRuleDescription('newRule');
+    });
+
+    it('add clear action', () => {
+      cy
+        .get('select[data-tests-id="selectAction"]')
+        .select('copy')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click()
+        .get('select[data-tests-id="selectAction"]')
+        .select('concat')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click()
+        .get('select[data-tests-id="selectAction"]')
+        .select('map')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click()
+        .get('select[data-tests-id="selectAction"]')
+        .select('date formatter')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click()
+        .get('select[data-tests-id="selectAction"]')
+        .select('log text')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click()
+        .get('select[data-tests-id="selectAction"]')
+        .select('log event')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click()
+        .get('select[data-tests-id="selectAction"]')
+        .select('replace text')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click()
+        .get('select[data-tests-id="selectAction"]')
+        .select('clear')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click();
+    });
+
+    it('add rule with copy action CRUD procedure', () => {
+      // Create action
+      addCopyAction();
+
+      cy.doneSaveRule();
+      cy.get('button[data-tests-id="btnDone"]').click();
+
+      // value approve
+      editFirstRule();
+
+      cy
+        .get('input[data-tests-id="valueInput"]')
+        .should('have.value', 'a')
+        .get('input[data-tests-id="inputTarget"]')
+        .should('have.value', 'event.commonEventHeader.domain')
+
+        // change value
+        .get('input[data-tests-id="valueInput"]')
+        .type('B')
+        .get('button[data-tests-id="btnSave"]')
+        .click();
+      cy.doneSaveAndEditRule();
+      cy.get('button[data-tests-id="btnDone"]').click();
+
+      // Delete copy action
+      deleteFirstRule();
+    });
+
+    it('add multiple rules CRUD procedure', () => {
+      // Create actions
+      addCopyAction();
+      cy.doneSaveRule();
+      cy.get('button[data-tests-id="btnDone"]').click();
+
+      // Edit copy action - verify values
+      editFirstRule();
+
+      cy
+        .get('input[data-tests-id="valueInput"]')
+        .should('have.value', 'a')
+        .get('input[data-tests-id="inputTarget"]')
+        .should('have.value', 'event.commonEventHeader.domain')
+        .get('button[data-tests-id="btnDone"]')
+        .click();
+
+      // Add new rule with map action
+      cy.get('button[data-tests-id="addMoreRule"]').click();
+      fillRuleDescription('newRule2');
+      addMapAndDeleteRowAction();
+      cy.doneSaveMapRule();
+      cy.get('button[data-tests-id="btnDone"]').click();
+
+      // Verify map values
+      editLastRule();
+
+      cy
+        .get('input[data-tests-id="key"]')
+        .first()
+        .should('have.value', 'Key1')
+        .get('input[data-tests-id="value"]')
+        .first()
+        .should('have.value', 'Key1')
+        .get('input[data-tests-id="key"]')
+        .last()
+        .should('have.value', 'Key2')
+        .get('input[data-tests-id="value"]')
+        .last()
+        .should('have.value', 'Key2');
+      cy.get('button[data-tests-id="btnDone"]').click();
+
+      // Delete copy Action
+      deleteFirstRule();
+    });
+
+    it('add rule with log text action CRUD procedure', () => {
+      cy
+        .get('select[data-tests-id="selectAction"]')
+        .select('log text')
+        .get('button[data-tests-id="btnAddAction"]')
+        .click();
+
+      cy
+        .get('input[data-tests-id="InputLogText"]')
+        .type('ABC')
+        .should('have.value', 'ABC');
+
+      cy
+        .get('input[data-tests-id="InputLogName"]')
+        .type('AAA')
+        .should('have.value', 'AAA');
+
+      cy
+        .get('input[data-tests-id="InputLogLevel"]')
+        .type('BBB')
+        .should('have.value', 'BBB');
+
+      cy.doneSaveLogTextRule();
+      cy.get('button[data-tests-id="btnDone"]').click();
+
+      // value assertion
+      editFirstRule();
+
+      cy
+        .get('input[data-tests-id="InputLogText"]')
+        .should('have.value', 'ABC')
+        .get('input[data-tests-id="InputLogName"]')
+        .should('have.value', 'AAA')
+        .get('input[data-tests-id="InputLogLevel"]')
+        .should('have.value', 'BBB');
+
+      cy.get('button[data-tests-id="btnDone"]').click();
+    });
+  });
+
+  describe('Translate and save Rule List', () => {
+    beforeEach(() => {
+      cy.httpGetDDLData();
+      cy.getMCListEmpty();
+      cy.homePage();
+      cy.get('button[data-tests-id="btn-create-mc"]').click();
+      cy.fillNewMcForm();
+      cy.httpCreateNewMc();
+      cy.emptyRuleEngine('Type1');
+      cy
+        .get('button[data-tests-id="createMonitoring"]')
+        .click()
+        .get('#ui-tabpanel-1-label')
+        .should('contain', 'map')
+        .click();
+      cy.httpTargetTree();
+      selectVersionAndTypeAndAddFirstRule();
+      fillRuleDescription('newRule');
       addCopyAction();
       cy.doneSaveRule();
     });
@@ -159,7 +766,7 @@
           .click()
           .get('.toast-container')
           .should('be.visible')
-          .get('.map-setting-list > #Type1 > input')
+          .get('.map-setting-list > form > #Type1 > input')
           .should('be.visible')
           .and('have.value', translateValue());
       });
diff --git a/public/cypress/support/generalCommands.ts b/public/cypress/support/generalCommands.ts
index fc87acc..35d2fa7 100644
--- a/public/cypress/support/generalCommands.ts
+++ b/public/cypress/support/generalCommands.ts
@@ -3,6 +3,7 @@
     httpGetDDLData: typeof httpGetDDLData;
     fillNewMcForm: typeof fillNewMcForm;
     httpCreateNewMc: typeof httpCreateNewMc;
+    httpCreateNewMcWithBooleanDDL: typeof httpCreateNewMcWithBooleanDDL;
   }
 }
 
@@ -44,7 +45,22 @@
     .as('newMC');
 }
 
+function httpCreateNewMcWithBooleanDDL() {
+  cy.server();
+  cy
+    .route({
+      method: 'POST',
+      url: Cypress.env('backendUrl') + '/createMC',
+      response: 'fixture:createMcResWithBooleanDDL'
+    })
+    .as('newMCWithBooleanDDL');
+}
+
 // Add cypress commands
 Cypress.Commands.add('httpGetDDLData', httpGetDDLData);
 Cypress.Commands.add('fillNewMcForm', fillNewMcForm);
 Cypress.Commands.add('httpCreateNewMc', httpCreateNewMc);
+Cypress.Commands.add(
+  'httpCreateNewMcWithBooleanDDL',
+  httpCreateNewMcWithBooleanDDL
+);
diff --git a/public/cypress/support/homeCommands.ts b/public/cypress/support/homeCommands.ts
index 6f3349c..d54f30e 100644
--- a/public/cypress/support/homeCommands.ts
+++ b/public/cypress/support/homeCommands.ts
@@ -17,25 +17,33 @@
 // functionality
 function sdcIsOwnerFalse(): void {
   cy.visit(
-    'home?userId=cs0008&userRole=DESIGNER&displayType=context&contextType=SERVICE&uuid=b1645734-b812-4cd7-a0cc-5b5843940ad6&lifecycleState=NOT_CERTIFIED_CHECKOUT&isOwner=false'
+    'home?userId=cs0008&userRole=DESIGNER&displayType=context&contextType=SERVICES&uu' +
+      'id=06c7d927-4e2f-47e1-a29d-b6ed229ebc0a&lifecycleState=NOT_CERTIFIED_CHECKOUT&is' +
+      'Owner=false&version=0.1'
   );
 }
 
 function sdcUserNotCheckout(): void {
   cy.visit(
-    'home?userId=cs0008&userRole=DESIGNER&displayType=context&contextType=SERVICE&uuid=b1645734-b812-4cd7-a0cc-5b5843940ad6&lifecycleState=READY_FOR_CERTIFICATION&isOwner=true'
+    'home?userId=cs0008&userRole=DESIGNER&displayType=context&contextType=SERVICES&uu' +
+      'id=06c7d927-4e2f-47e1-a29d-b6ed229ebc0a&lifecycleState=READY_FOR_CERTIFICATION&i' +
+      'sOwner=true&version=0.1'
   );
 }
 
 function homePage(): void {
   cy.visit(
-    'home?userId=cs0008&userRole=DESIGNER&displayType=context&contextType=SERVICES&uuid=06c7d927-4e2f-47e1-a29d-b6ed229ebc0a&lifecycleState=NOT_CERTIFIED_CHECKOUT&isOwner=true&version=0.1'
+    'home?userId=cs0008&userRole=DESIGNER&displayType=context&contextType=SERVICES&uu' +
+      'id=06c7d927-4e2f-47e1-a29d-b6ed229ebc0a&lifecycleState=NOT_CERTIFIED_CHECKOUT&is' +
+      'Owner=true&version=0.1'
   );
 }
 
 function homePageCertified(): void {
   cy.visit(
-    'home?userId=cs0008&userRole=DESIGNER&displayType=context&contextType=SERVICES&uuid=06c7d927-4e2f-47e1-a29d-b6ed229ebc0a&lifecycleState=CERTIFIED_CHECKOUT&isOwner=true&version=0.1'
+    'home?userId=cs0008&userRole=DESIGNER&displayType=context&contextType=SERVICES&uu' +
+      'id=06c7d927-4e2f-47e1-a29d-b6ed229ebc0a&lifecycleState=CERTIFIED_CHECKOUT&isOwne' +
+      'r=true&version=0.1'
   );
 }
 
@@ -46,7 +54,8 @@
       method: 'DELETE',
       url:
         Cypress.env('backendUrl') +
-        '/SERVICES/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/vfb53dd48360ff4fa2b66e6ceb1961bd9b0/cba37ed8-94e1-406f-b4f5-b5edbc31ac85/deleteVfcmtReference',
+        '/SERVICES/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/vfb53dd48360ff4fa2b66e6ceb1961bd9' +
+        'b0/cba37ed8-94e1-406f-b4f5-b5edbc31ac85/deleteVfcmtReference',
       response: '{}'
     })
     .as('deleteMonitoringComponent');
@@ -59,7 +68,8 @@
       method: 'POST',
       url:
         Cypress.env('backendUrl') +
-        '/SERVICES/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/vfb53dd48360ff4fa2b66e6ceb1961bd9b0/saveComposition/cba37ed8-94e1-406f-b4f5-b5edbc31ac85',
+        '/SERVICES/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/vfb53dd48360ff4fa2b66e6ceb1961bd9' +
+        'b0/saveComposition/cba37ed8-94e1-406f-b4f5-b5edbc31ac85',
       response: '{}'
     })
     .as('saveMonitoringComponent');
@@ -72,7 +82,8 @@
       method: 'POST',
       url:
         Cypress.env('backendUrl') +
-        '/SERVICES/createBluePrint/cba37ed8-94e1-406f-b4f5-b5edbc31ac85/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/vfb53dd48360ff4fa2b66e6ceb1961bd9b0/',
+        '/SERVICES/createBluePrint/cba37ed8-94e1-406f-b4f5-b5edbc31ac85/06c7d927-4e2f-47e' +
+        '1-a29d-b6ed229ebc0a/vfb53dd48360ff4fa2b66e6ceb1961bd9b0/',
       response: '{}'
     })
     .as('submitMonitoringComponent');
@@ -85,7 +96,8 @@
       method: 'DELETE',
       url:
         Cypress.env('backendUrl') +
-        '/SERVICES/teSt.__.monitoring---TempLATE.6hnc/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/dump0/64471437-8feb-40d9-a8b0-9407a81dd5c0/deleteVfcmtReference',
+        '/SERVICES/06c7d927-4e2f-47e1-a29d-b6ed229ebc0a/dump0/64471437-8feb-40d9-a8b0-940' +
+        '7a81dd5c0/deleteVfcmtReference',
       response: '{}'
     })
     .as('deleteMonitoringComponentWithBlueprint');
diff --git a/public/cypress/support/index.js b/public/cypress/support/index.js
index 2f70722..7cac3de 100644
--- a/public/cypress/support/index.js
+++ b/public/cypress/support/index.js
@@ -15,9 +15,31 @@
 
 // Import commands.js using ES2015 syntax:
 import './commands';
-import './homeCommands';
 import './generalCommands';
+import './homeCommands';
 import './ruleEngineCommands';
 
-// Alternatively you can use CommonJS syntax:
-// require('./commands')
+// const istanbul = require('istanbul-lib-coverage');
+
+// const map = istanbul.createCoverageMap({});
+
+// Cypress.on('window:before:unload', e => {
+//   const coverage = e.currentTarget.__coverage__;
+
+//   if (coverage) {
+//     map.merge(coverage);
+//   }
+// });
+
+// after(() => {
+//   cy.window().then(win => {
+//     const coverage = win.__coverage__;
+
+//     if (coverage) {
+//       map.merge(coverage);
+//     }
+
+//     cy.writeFile('.nyc_output/out.json', JSON.stringify(map));
+//     cy.exec('nyc report --reporter=html');
+//   });
+// })
diff --git a/public/cypress/support/ruleEngineCommands.ts b/public/cypress/support/ruleEngineCommands.ts
index 2142e7f..51ddc2d 100644
--- a/public/cypress/support/ruleEngineCommands.ts
+++ b/public/cypress/support/ruleEngineCommands.ts
@@ -3,7 +3,12 @@
     emptyRuleEngine: typeof emptyRuleEngine;
     httpTargetTree: typeof httpTargetTree;
     doneSaveRule: typeof doneSaveRule;
+    doneSaveAndEditRule: typeof doneSaveAndEditRule;
+    deleteRule: typeof deleteRule;
+    doneSaveMapRule: typeof doneSaveMapRule;
+    doneSaveLogTextRule: typeof doneSaveLogTextRule;
     httpTransalte: typeof httpTransalte;
+    httpGenerateMappingRulesFileName: typeof httpGenerateMappingRulesFileName;
   }
 }
 
@@ -45,12 +50,65 @@
       method: 'POST',
       url:
         Cypress.env('backendUrl') +
-        '/rule-editor/rule/6d436c07-8006-4335-8c84-d65b4740f8d6/map/n.1517823219961.0/Type1',
+        '/rule-editor/rule/6d436c07-8006-4335-8c84-d65b4740f8d6/map/n.1517823219961.0/Typ' +
+        'e1',
       response: 'fixture:doneSaveSimpleCopy'
     })
     .as('doneSaveCopyRule');
 }
 
+function deleteRule() {
+  cy.server();
+  cy
+    .route({
+      method: 'DELETE',
+      url:
+        Cypress.env('backendUrl') +
+        '/rule-editor/rule/6d436c07-8006-4335-8c84-d65b4740f8d6/map/n.1517823219961.0/Type1/f620724b-7170-43e1-8a8b-55e98cabe658',
+      response: '{}'
+    })
+    .as('deleteCopyRule');
+}
+
+function doneSaveAndEditRule() {
+  cy.server();
+  cy
+    .route({
+      method: 'POST',
+      url:
+        Cypress.env('backendUrl') +
+        '/rule-editor/rule/6d436c07-8006-4335-8c84-d65b4740f8d6/map/n.1517823219961.0/Type1',
+      response: 'fixture:doneSaveEditSimpleCopy'
+    })
+    .as('doneSaveAndEditRule');
+}
+
+function doneSaveMapRule() {
+  cy.server();
+  cy
+    .route({
+      method: 'POST',
+      url:
+        Cypress.env('backendUrl') +
+        '/rule-editor/rule/6d436c07-8006-4335-8c84-d65b4740f8d6/map/n.1517823219961.0/Type1',
+      response: 'fixture:doneSaveSimpleMap'
+    })
+    .as('doneSaveMapRule');
+}
+
+function doneSaveLogTextRule() {
+  cy.server();
+  cy
+    .route({
+      method: 'POST',
+      url:
+        Cypress.env('backendUrl') +
+        '/rule-editor/rule/6d436c07-8006-4335-8c84-d65b4740f8d6/map/n.1517823219961.0/Type1',
+      response: 'fixture:doneSaveSimpleLogText'
+    })
+    .as('doneSaveLogTextRule');
+}
+
 function httpTransalte() {
   cy.server();
   cy
@@ -58,14 +116,37 @@
       method: 'GET',
       url:
         Cypress.env('backendUrl') +
-        '/rule-editor/rule/translate/6d436c07-8006-4335-8c84-d65b4740f8d6/map/n.1517823219961.0/Type1',
+        '/rule-editor/rule/translate/6d436c07-8006-4335-8c84-d65b4740f8d6/map/n.151782321' +
+        '9961.0/Type1',
       response: 'fixture:TranslateSimpleCopy'
     })
     .as('TranslateSimpleCopy');
 }
 
+function httpGenerateMappingRulesFileName() {
+  cy.server();
+  cy
+    .route({
+      method: 'GET',
+      url:
+        Cypress.env('backendUrl') +
+        '/rule-editor/getExistingRuleTargets/6d436c07-8006-4335-8c84-d65b4740f8d6/map/n.1' +
+        '517823219961.0',
+      response: ['Type1', 'json', 'name']
+    })
+    .as('TranslateSimpleCopy');
+}
+
 // Add cypress commands
 Cypress.Commands.add('emptyRuleEngine', emptyRuleEngine);
 Cypress.Commands.add('httpTargetTree', httpTargetTree);
 Cypress.Commands.add('doneSaveRule', doneSaveRule);
+Cypress.Commands.add('doneSaveAndEditRule', doneSaveAndEditRule);
+Cypress.Commands.add('doneSaveMapRule', doneSaveMapRule);
+Cypress.Commands.add('doneSaveLogTextRule', doneSaveLogTextRule);
+Cypress.Commands.add('deleteRule', deleteRule);
 Cypress.Commands.add('httpTransalte', httpTransalte);
+Cypress.Commands.add(
+  'httpGenerateMappingRulesFileName',
+  httpGenerateMappingRulesFileName
+);
diff --git a/public/karma.conf.js b/public/karma.conf.js
index af139fa..9aa7899 100644
--- a/public/karma.conf.js
+++ b/public/karma.conf.js
@@ -1,22 +1,23 @@
 // Karma configuration file, see link for more information
 // https://karma-runner.github.io/1.0/config/configuration-file.html
 
-module.exports = function (config) {
+module.exports = function(config) {
   config.set({
     basePath: '',
     frameworks: ['jasmine', '@angular/cli'],
     plugins: [
       require('karma-jasmine'),
       require('karma-chrome-launcher'),
+      require('karma-phantomjs-launcher'),
       require('karma-jasmine-html-reporter'),
       require('karma-coverage-istanbul-reporter'),
       require('@angular/cli/plugins/karma')
     ],
-    client:{
+    client: {
       clearContext: false // leave Jasmine Spec Runner output visible in browser
     },
     coverageIstanbulReporter: {
-      reports: [ 'html', 'lcovonly' ],
+      reports: ['html', 'lcovonly'],
       fixWebpackSourcePaths: true
     },
     angularCli: {
@@ -27,7 +28,7 @@
     colors: true,
     logLevel: config.LOG_INFO,
     autoWatch: true,
-    browsers: ['Chrome'],
-    singleRun: false
+    browsers: ['PhantomJS'],
+    singleRun: true
   });
 };
diff --git a/public/package.json b/public/package.json
index 2c4b85e..35c0892 100644
--- a/public/package.json
+++ b/public/package.json
@@ -5,7 +5,7 @@
   "scripts": {
     "ng": "ng",
     "start": "ng serve",
-    "build": "ng build --prod --deploy-url=/dcaed",
+    "build": "ng build --prod --deploy-url=/dcaed -sm",
     "test": "ng test",
     "test:jest": "jest --watch",
     "test:ci": "jest --runInBand",
@@ -50,14 +50,17 @@
     "@angular/router": "^5.1.0",
     "@bahmutov/add-typescript-to-cypress": "^2.0.0",
     "@ng-select/ng-select": "^0.26.2",
-    "angular-tree-component": "^7.0.1",
+    "@swimlane/ngx-datatable": "^13.0.1",
+    "angular-tree-component": "^7.1.0",
     "core-js": "^2.4.1",
     "feather-icons": "^4.5.0",
     "font-awesome": "^4.7.0",
+    "intl": "^1.2.5",
     "lodash": "^4.17.5",
     "material-design-icons": "^3.0.1",
-    "mobx": "^4.1.0",
+    "mobx": "^4.2.0",
     "mobx-angular": "^3.0.1",
+    "ngx-datatable": "^1.0.3",
     "ngx-toastr": "^8.2.1",
     "papaparse": "^4.3.6",
     "pretty-checkbox": "3.0.3",
@@ -68,7 +71,7 @@
     "zone.js": "^0.8.19"
   },
   "devDependencies": {
-    "@angular/cli": "^1.7.3",
+    "@angular/cli": "^1.7.4",
     "@angular/compiler-cli": "^5.1.0",
     "@angular/language-service": "^5.1.0",
     "@storybook/addon-actions": "3.4.0-alpha.9",
@@ -85,9 +88,10 @@
     "angular2-template-loader": "^0.6.2",
     "babel-core": "^6.26.0",
     "codelyzer": "^4.0.1",
-    "cypress": "1.4.2",
+    "cypress": "^2.1.0",
     "electron": "^1.8.3",
     "husky": "^0.14.3",
+    "istanbul-instrumenter-loader": "^3.0.1",
     "jasmine-core": "~2.8.0",
     "jasmine-spec-reporter": "~4.2.1",
     "jest": "^22.4.2",
@@ -99,12 +103,14 @@
     "karma-coverage-istanbul-reporter": "^1.2.1",
     "karma-jasmine": "~1.1.0",
     "karma-jasmine-html-reporter": "^0.2.2",
+    "karma-phantomjs-launcher": "^1.0.4",
     "lint-staged": "^7.0.0",
     "mobx-devtools-mst": "^0.9.14",
     "mobx-remotedev": "^0.2.8",
     "mocha": "^5.0.0",
     "mocha-rp-reporter": "^1.0.12",
     "mochawesome": "^3.0.2",
+    "nyc": "^11.7.1",
     "prettier": "^1.11.1",
     "pretty-quick": "^1.4.1",
     "protractor": "~5.1.2",
diff --git a/public/src/app/api/rest-api.service.spec.ts b/public/src/app/api/rest-api.service.spec.ts
index ce921cb..c0fea4b 100644
--- a/public/src/app/api/rest-api.service.spec.ts
+++ b/public/src/app/api/rest-api.service.spec.ts
@@ -1,23 +1,479 @@
-import { TestBed, inject } from '@angular/core/testing';
-import { HttpModule } from '@angular/http';
-import { RestApiService } from './rest-api.service';
+import { HttpClientTestingModule } from '@angular/common/http/testing';
+import { TestBed, async, inject } from '@angular/core/testing';
+import {
+  BaseRequestOptions,
+  Http,
+  HttpModule,
+  Response,
+  ResponseOptions,
+  XHRBackend
+} from '@angular/http';
+import { MockBackend } from '@angular/http/testing';
 import { v4 as genrateUuid } from 'uuid';
+import { Store } from '../store/store';
+import { RestApiService } from './rest-api.service';
 
 describe('RestApiService', () => {
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      imports: [HttpModule],
-      providers: [RestApiService]
-    });
-  });
+  let service: RestApiService;
+  let backend: MockBackend;
+
+  beforeEach(
+    async(() => {
+      TestBed.configureTestingModule({
+        imports: [HttpModule, HttpClientTestingModule],
+        providers: [
+          RestApiService,
+          Store,
+          MockBackend,
+          BaseRequestOptions,
+          {
+            provide: Http,
+            deps: [MockBackend, BaseRequestOptions],
+            useFactory: (
+              backend: XHRBackend,
+              defaultOptions: BaseRequestOptions
+            ) => {
+              return new Http(backend, defaultOptions);
+            }
+          }
+        ]
+      });
+      // Get the MockBackend
+      backend = TestBed.get(MockBackend);
+      service = TestBed.get(RestApiService);
+    })
+  );
 
   it(
     'should be created',
-    inject([RestApiService], (service: RestApiService) => {
+    inject([RestApiService], () => {
       expect(service).toBeTruthy();
     })
   );
 
+  it('should baseUrl match localhost', () => {
+    expect(service.baseUrl).toBe('http://localhost:8446');
+  });
+
+  it('should headers user id get default', () => {
+    service.addHeaders();
+    expect(service.headers.get('USER_ID')).toBe('ym903w');
+  });
+
+  it('should headers Content-Type json', () => {
+    service.addHeaders();
+    expect(service.headers.get('Content-Type')).toBe('application/json');
+  });
+
+  it(
+    'should get service instance from API',
+    async(() => {
+      const serviceInstances = [
+        {
+          name: 'ciService669277f472b0',
+          category: 'Mobility'
+        }
+      ];
+
+      backend.connections.subscribe(connection => {
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(serviceInstances)
+            })
+          )
+        );
+      });
+
+      service.getServiceInstances('123456').subscribe(_res => {
+        expect(_res.length).toBe(1);
+        expect(_res).toEqual(serviceInstances);
+      });
+    })
+  );
+
+  it(
+    'should get template resources from API',
+    async(() => {
+      const template = [
+        {
+          name: 'AviStone1234',
+          version: '0.1'
+        }
+      ];
+
+      backend.connections.subscribe(connection => {
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(template)
+            })
+          )
+        );
+      });
+
+      service.getTemplateResources().subscribe(_res => {
+        expect(_res.length).toBe(1);
+        expect(_res).toEqual(template);
+      });
+    })
+  );
+
+  it(
+    'should getCompositionMonitoringComponent from API',
+    async(() => {
+      const template = [
+        {
+          name: 'AviStone1234',
+          version: '0.1'
+        }
+      ];
+
+      backend.connections.subscribe(connection => {
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(template)
+            })
+          )
+        );
+      });
+
+      service.getCompositionMonitoringComponent('123456').subscribe(_res => {
+        expect(_res.length).toBe(1);
+        expect(_res).toEqual(template);
+      });
+    })
+  );
+
+  it(
+    'importVFCMT from API',
+    async(() => {
+      const template = [
+        {
+          name: 'AviStone1234',
+          version: '0.1'
+        }
+      ];
+
+      backend.connections.subscribe(connection => {
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(template)
+            })
+          )
+        );
+      });
+
+      service.importVFCMT({}).subscribe(_res => {
+        expect(_res.length).toBe(1);
+        expect(_res).toEqual(template);
+      });
+    })
+  );
+
+  it(
+    'deleteMonitoringComponent from API',
+    async(() => {
+      const template = [
+        {
+          name: 'AviStone1234',
+          version: '0.1'
+        }
+      ];
+
+      backend.connections.subscribe(connection => {
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(template)
+            })
+          )
+        );
+      });
+
+      service
+        .deleteMonitoringComponent(
+          {
+            contextType: 'service',
+            uuid: '123456'
+          },
+          '45678',
+          'liav'
+        )
+        .subscribe(_res => {
+          console.log('delete', _res);
+        });
+    })
+  );
+
+  it(
+    'deleteMonitoringComponentWithBlueprint from API',
+    async(() => {
+      const template = [
+        {
+          name: 'AviStone1234',
+          version: '0.1'
+        }
+      ];
+
+      backend.connections.subscribe(connection => {
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(template)
+            })
+          )
+        );
+      });
+
+      service
+        .deleteMonitoringComponentWithBlueprint(
+          {
+            contextType: 'service',
+            uuid: '123456'
+          },
+          'voskComp',
+          '45678',
+          'liav'
+        )
+        .subscribe(_res => {
+          console.log('delete', _res);
+        });
+    })
+  );
+
+  it(
+    'createNewVFCMT from API',
+    async(() => {
+      const template = [
+        {
+          name: 'AviStone1234',
+          version: '0.1'
+        }
+      ];
+
+      backend.connections.subscribe(connection => {
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(template)
+            })
+          )
+        );
+      });
+
+      service.createNewVFCMT({}).subscribe(_res => {
+        expect(_res.length).toBe(1);
+        expect(_res).toEqual(template);
+      });
+    })
+  );
+
+  it(
+    'saveMonitoringComponent from API',
+    async(() => {
+      const template = [
+        {
+          name: 'AviStone1234',
+          version: '0.1'
+        }
+      ];
+
+      backend.connections.subscribe(connection => {
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(template)
+            })
+          )
+        );
+      });
+
+      service
+        .saveMonitoringComponent({
+          contextType: 'service',
+          serviceUuid: '123456',
+          vfiName: 'liavVfi',
+          vfcmtUuid: '987456',
+          cdump: {}
+        })
+        .subscribe(_res => {
+          expect(_res.length).toBe(1);
+          expect(_res).toEqual(template);
+        });
+    })
+  );
+
+  it(
+    'submitMonitoringComponent from API',
+    async(() => {
+      const template = [
+        {
+          name: 'AviStone1234',
+          version: '0.1'
+        }
+      ];
+
+      backend.connections.subscribe(connection => {
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(template)
+            })
+          )
+        );
+      });
+
+      service
+        .submitMonitoringComponent({
+          contextType: 'service',
+          serviceUuid: '123456',
+          vfiName: 'liavVfi',
+          vfcmtUuid: '987456',
+          cdump: {},
+          flowType: 'SNMP'
+        })
+        .subscribe(_res => {
+          expect(_res.length).toBe(1);
+          expect(_res).toEqual(template);
+        });
+    })
+  );
+
+  it(
+    'should get Vfcmt Reference Data from API',
+    async(() => {
+      const template = [
+        {
+          name: 'AviStone1234',
+          version: '0.1'
+        }
+      ];
+
+      backend.connections.subscribe(connection => {
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(template)
+            })
+          )
+        );
+      });
+
+      service.getVfcmtReferenceData('123456').subscribe(_res => {
+        expect(_res.length).toBe(1);
+        expect(_res).toEqual(template);
+      });
+    })
+  );
+
+  it(
+    'should get vfcmt list from API',
+    async(() => {
+      const dummyVfcmts = [
+        {
+          uuid: 'cba37ed8-94e1-406f-b4f5-b5edbc31ac85',
+          name: 'CIe4d5a9b271d6'
+        },
+        {
+          uuid: '64471437-8feb-40d9-a8b0-9407a81dd5c0',
+          name: 'teSt.__.monitoring---TempLATE.6hnc'
+        }
+      ];
+
+      backend.connections.subscribe(connection => {
+        expect(connection.request.url).toMatch(
+          'http://localhost:8446/service/123456/0.1/monitoringComponents'
+        );
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(dummyVfcmts)
+            })
+          )
+        );
+      });
+
+      service
+        .getMonitoringComponents({
+          contextType: 'service',
+          uuid: '123456',
+          version: '0.1'
+        })
+        .subscribe(_res => {
+          expect(_res.length).toBe(2);
+          expect(_res).toEqual(dummyVfcmts);
+        });
+    })
+  );
+
+  it(
+    'should get migration vfcmt list from API',
+    async(() => {
+      const dummyVfcmts = [
+        {
+          uuid: 'cba37ed8-94e1-406f-b4f5-b5edbc31ac85',
+          name: 'CIe4d5a9b271d6'
+        },
+        {
+          uuid: '64471437-8feb-40d9-a8b0-9407a81dd5c0',
+          name: 'teSt.__.monitoring---TempLATE.6hnc'
+        }
+      ];
+
+      backend.connections.subscribe(connection => {
+        expect(connection.request.url).toMatch(
+          'http://localhost:8446/service/123456/0.1/getVfcmtsForMigration'
+        );
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(dummyVfcmts)
+            })
+          )
+        );
+      });
+
+      service
+        .getVfcmtsForMigration({
+          contextType: 'service',
+          uuid: '123456',
+          version: '0.1'
+        })
+        .subscribe(_res => {
+          expect(_res.length).toBe(2);
+          expect(_res).toEqual(dummyVfcmts);
+        });
+    })
+  );
+
+  it(
+    'should get flow type from API',
+    async(() => {
+      const flowType = ['syslog', 'SNMP'];
+
+      backend.connections.subscribe(connection => {
+        expect(connection.request.url).toMatch(
+          'http://localhost:8446/conf/composition'
+        );
+        connection.mockRespond(
+          new Response(
+            new ResponseOptions({
+              body: JSON.stringify(flowType)
+            })
+          )
+        );
+      });
+
+      service.getFlowType().subscribe(_res => {
+        expect(_res.length).toBe(2);
+        expect(_res).toEqual(flowType);
+      });
+    })
+  );
+
   it('should genrate deffrent uuid each time for request id', () => {
     const firstUuid = genrateUuid();
     const secondUuid = genrateUuid();
diff --git a/public/src/app/api/rest-api.service.ts b/public/src/app/api/rest-api.service.ts
index ba5cc54..cd55a6d 100644
--- a/public/src/app/api/rest-api.service.ts
+++ b/public/src/app/api/rest-api.service.ts
@@ -1,18 +1,13 @@
 import { Injectable } from '@angular/core';
-import {
-  Http,
-  Response,
-  Headers,
-  RequestOptions,
-  URLSearchParams
-} from '@angular/http';
+import { Headers, Http, RequestOptions, Response } from '@angular/http';
 import { Observable } from 'rxjs/Observable';
+import 'rxjs/add/observable/throw';
+import 'rxjs/add/operator/catch';
 // Import RxJs required methods
 import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/catch';
-import 'rxjs/add/observable/throw';
-import { environment } from '../../environments/environment';
 import { v4 as uuidGenarator } from 'uuid';
+import { environment } from '../../environments/environment';
+import { Store } from '../store/store';
 
 @Injectable()
 export class RestApiService {
@@ -20,16 +15,24 @@
   headers: Headers;
   baseUrl: string;
 
-  constructor(private http: Http) {
+  constructor(private http: Http, public store: Store) {
     this.baseUrl = `${environment.apiBaseUrl}`;
+  }
+
+  addHeaders() {
+    const userID =
+      this.store.sdcParmas === undefined
+        ? 'ym903w'
+        : this.store.sdcParmas.userId;
     this.headers = new Headers({
       'Content-Type': 'application/json',
-      USER_ID: 'ym903w'
+      USER_ID: userID
     });
     this.options = new RequestOptions({ headers: this.headers });
   }
 
   getVfcmtsForMigration(params) {
+    this.addHeaders();
     const { contextType, uuid, version } = params;
     const url = `${
       this.baseUrl
@@ -44,6 +47,7 @@
   }
 
   getVfcmtReferenceData(vfcmtUUID) {
+    this.addHeaders();
     const url = `${this.baseUrl}/getVfcmtReferenceData/${vfcmtUUID}`;
     this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
     return this.http
@@ -53,6 +57,7 @@
   }
 
   getFlowType() {
+    this.addHeaders();
     const url = `${this.baseUrl}/conf/composition`;
     this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
     return this.http
@@ -62,6 +67,7 @@
   }
 
   createNewVFCMT(params) {
+    this.addHeaders();
     const url = `${this.baseUrl}/createMC`;
     this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
     return this.http
@@ -73,6 +79,7 @@
   }
 
   importVFCMT(params) {
+    this.addHeaders();
     const url = `${this.baseUrl}/importMC`;
     this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
     return this.http
@@ -84,6 +91,7 @@
   }
 
   getServiceInstances(serviceID) {
+    this.addHeaders();
     const url = `${this.baseUrl}/service/${serviceID}`;
     this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
     return this.http
@@ -95,6 +103,7 @@
   }
 
   getTemplateResources() {
+    this.addHeaders();
     const url = `${this.baseUrl}/getResourcesByMonitoringTemplateCategory`;
     this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
     return this.http
@@ -104,6 +113,7 @@
   }
 
   getMonitoringComponents(params) {
+    this.addHeaders();
     const { contextType, uuid, version } = params;
     const url = `${
       this.baseUrl
@@ -116,6 +126,7 @@
   }
 
   deleteMonitoringComponent(params, vfcmtUuid, vfiName) {
+    this.addHeaders();
     const { contextType, uuid } = params;
     const url = `${
       this.baseUrl
@@ -123,7 +134,7 @@
     this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
     return this.http
       .delete(url, this.options)
-      .map((res: Response) => res.json())
+      .map((res: Response) => res)
       .catch((error: any) => Observable.throw(error.json() || 'Server error'));
   }
 
@@ -133,6 +144,7 @@
     vfcmtUuid,
     vfiName
   ) {
+    this.addHeaders();
     const { contextType, uuid } = params;
     const url = `${
       this.baseUrl
@@ -140,11 +152,12 @@
     this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
     return this.http
       .delete(url, this.options)
-      .map((res: Response) => res.json())
+      .map((res: Response) => res)
       .catch((error: any) => Observable.throw(error.json() || 'Server error'));
   }
 
   getCompositionMonitoringComponent(vfcmtUuid) {
+    this.addHeaders();
     const url = `${this.baseUrl}/getMC/${vfcmtUuid}`;
     this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
     return this.http
@@ -154,18 +167,20 @@
   }
 
   saveMonitoringComponent(params) {
+    this.addHeaders();
     const { contextType, serviceUuid, vfiName, vfcmtUuid, cdump } = params;
     const url = `${
       this.baseUrl
     }/${contextType}/${serviceUuid}/${vfiName}/saveComposition/${vfcmtUuid}`;
     this.options.headers.set('X-ECOMP-RequestID', uuidGenarator());
     return this.http
-      .post(url, cdump, this.options)
+      .post(url, JSON.stringify(cdump), this.options)
       .map((res: Response) => res.json())
       .catch((error: any) => Observable.throw(error.json() || 'Server error'));
   }
 
   submitMonitoringComponent(params) {
+    this.addHeaders();
     const { contextType, serviceUuid, vfiName, vfcmtUuid, flowType } = params;
     const url = `${
       this.baseUrl
diff --git a/public/src/app/app.component.html b/public/src/app/app.component.html
index adb06f1..29762b6 100644
--- a/public/src/app/app.component.html
+++ b/public/src/app/app.component.html
@@ -1,6 +1,7 @@
 <!-- <div class="container"> -->
 <main [@slideAnimation]="getRouterOutletState(o)">
   <app-error-dialog></app-error-dialog>
+  <app-sdc-notify-dialog></app-sdc-notify-dialog>
   <app-loader [hidden]="!this.store.loader"></app-loader>
   <router-outlet #o="outlet"></router-outlet>
 </main>
diff --git a/public/src/app/app.module.ts b/public/src/app/app.module.ts
index 8ed8c87..ba5d035 100644
--- a/public/src/app/app.module.ts
+++ b/public/src/app/app.module.ts
@@ -13,8 +13,9 @@
 import { MatDialogModule } from '@angular/material/dialog';
 import { ToastrModule } from 'ngx-toastr';
 import { NgSelectModule } from '@ng-select/ng-select';
+import { NgxDatatableModule } from '@swimlane/ngx-datatable';
 
-// import { SdcUiComponentsModule } from 'sdc-ui/lib/angular';
+// import {SdcUiComponentsModule} from 'sdc-ui/lib/angular';
 
 import { AppComponent } from './app.component';
 import { AppRoutingModule } from './app-routing.module';
@@ -44,6 +45,7 @@
 import { RuleListComponent } from './rule-engine/rule-list/rule-list.component';
 import { BarIconsComponent } from './bar-icons/bar-icons.component';
 import { DiagramComponent } from './diagram/diagram.component';
+import { SdcNotifyDialogComponent } from './sdc-notify-dialog/sdc-notify-dialog.component';
 
 const appInitializerFn = () => {
   return () => {
@@ -71,7 +73,8 @@
     SlidePanelComponent,
     RuleListComponent,
     BarIconsComponent,
-    DiagramComponent
+    DiagramComponent,
+    SdcNotifyDialogComponent
   ],
   imports: [
     BrowserModule,
@@ -89,7 +92,8 @@
     TreeModule,
     NgSelectModule,
     TooltipModule,
-    ToastrModule.forRoot({ enableHtml: true })
+    ToastrModule.forRoot({ enableHtml: true }),
+    NgxDatatableModule
   ],
   entryComponents: [ConfirmPopupComponent],
   providers: [
diff --git a/public/src/app/bar-icons/bar-icons.component.html b/public/src/app/bar-icons/bar-icons.component.html
index 03129bf..2b5269d 100644
--- a/public/src/app/bar-icons/bar-icons.component.html
+++ b/public/src/app/bar-icons/bar-icons.component.html
@@ -1,40 +1,44 @@
-<div style="display: flex; position: relative; justify-content: flex-end;">
-  <div style="display: flex; justify-content: flex-end;" [class]="genrateBarTestId()">
+<div style="display: flex; position: relative; justify-content: flex-end;" class="bars">
+  <div style="display: flex; justify-content: flex-end; align-items:center;" [class]="genrateBarTestId()">
     <button mat-icon-button>
       <span style="width: 100%;
+          color:#5a5a5a;
           height: 100%;
           display: flex;
           justify-content: center;
-          align-items: center;" [innerHTML]="'help-circle' | feather:18"></span>
+          align-items: center;" [innerHTML]="'help-circle' | feather:20"></span>
     </button>
     <hr>
 
-    <div *ngIf="tabName.includes('map')" style="display: flex;">
+    <div *ngIf="tabName.includes('map')" style="display: flex; align-items: center;">
       <button mat-icon-button>
         <span style="width: 100%;
+            color:#5a5a5a;
                 height: 100%;
                 display: flex;
                 justify-content: center;
-                align-items: center;" [innerHTML]="'upload' | feather:18"></span>
+                align-items: center;" [innerHTML]="'upload' | feather:20"></span>
       </button>
       <hr>
 
       <button mat-icon-button>
         <span style="width: 100%;
+            color:#5a5a5a;
                 height: 100%;
                 display: flex;
                 justify-content: center;
-                align-items: center;" [innerHTML]="'download' | feather:18"></span>
+                align-items: center;" [innerHTML]="'download' | feather:20"></span>
       </button>
       <hr>
     </div>
 
     <button mat-icon-button (click)="enableSetting()" data-tests-id="setting-gear" [style.color]="this.store.expandAdvancedSetting[store.tabIndex] ? '#009FDB' : 'black'">
       <span style="width: 100%;
+          color:#5a5a5a;
           height: 100%;
           display: flex;
           justify-content: center;
-          align-items: center;" [innerHTML]="'settings' | feather:18"></span>
+          align-items: center;" [innerHTML]="'settings' | feather:20"></span>
     </button>
   </div>
 
@@ -44,14 +48,32 @@
       <div style="font-size: 1.5em; padding: 0 12px;">{{tabName}} Advanced Setting</div>
       <form #cdumpConfForm="ngForm">
         <div *ngFor="let prop of store.configurationForm" class="field" [id]="prop.name">
-          <p class="field-label">{{prop.name}}</p>
-          <input *ngIf="!isPropertyDdl(prop)" type="text" name="{{prop.name}}" class="field-text" [(ngModel)]="prop.assignment.value"
+          <div style="display: flex;">
+            <p class="field-label">
+              {{prop.name}}
+            </p>
+            <span *ngIf="prop.description" class="help-description" style="padding-left: 5px;" [innerHTML]="'help-circle' | feather:14"
+              pTooltip="{{prop.description}}" tooltipPosition="top"></span>
+          </div>
+
+          <input *ngIf="isPropertyDdl(prop) === dropDownTypes.none" type="text" name="{{prop.name}}" class="field-text" [(ngModel)]="prop.value"
             (ngModelChange)="onChange($event)">
-          <select *ngIf="isPropertyDdl(prop)" class="field-text" name="{{prop.name}}" [(ngModel)]="prop.assignment.value" (ngModelChange)="onChange($event)">
-          <option *ngFor="let value of prop.constraints[0].valid_values" [value]="value">
-            {{value}}
-          </option>
-        </select>
+
+          <select *ngIf="isPropertyDdl(prop) === dropDownTypes.regularDDL" class="field-text" name="{{prop.name}}" [(ngModel)]="prop.value"
+            (ngModelChange)="onChange($event)">
+            <option *ngFor="let value of prop.constraints[0].valid_values" [value]="value">
+              {{value}}
+            </option>
+          </select>
+          <select *ngIf="isPropertyDdl(prop) === dropDownTypes.booleanDDL" class="field-text" name="{{prop.name}}" [(ngModel)]="prop.value"
+            (ngModelChange)="onChange($event)" data-tests-id="booleanDDL">
+            <option value="false">
+              false
+            </option>
+            <option value="true">
+              true
+            </option>
+          </select>
         </div>
       </form>
     </div>
diff --git a/public/src/app/bar-icons/bar-icons.component.scss b/public/src/app/bar-icons/bar-icons.component.scss
index 893f757..006e650 100644
--- a/public/src/app/bar-icons/bar-icons.component.scss
+++ b/public/src/app/bar-icons/bar-icons.component.scss
@@ -1,3 +1,9 @@
+.bars {
+  hr {
+    height: 22px;
+    color: #d2d2d2;
+  }
+}
 .setting {
   position: absolute;
   top: 47px;
diff --git a/public/src/app/bar-icons/bar-icons.component.ts b/public/src/app/bar-icons/bar-icons.component.ts
index adf4b88..bf930f3 100644
--- a/public/src/app/bar-icons/bar-icons.component.ts
+++ b/public/src/app/bar-icons/bar-icons.component.ts
@@ -1,7 +1,7 @@
 import { Component, Input, ViewChild } from '@angular/core';
-import { Store } from '../store/store';
-import { includes } from 'lodash';
 import { NgForm } from '@angular/forms';
+import { includes } from 'lodash';
+import { Store } from '../store/store';
 
 @Component({
   selector: 'app-bar-icons',
@@ -12,6 +12,11 @@
   configuration;
   @Input() tabName: string;
   @ViewChild('cdumpConfForm') cdumpConfForm: NgForm;
+  dropDownTypes = {
+    none: 1,
+    regularDDL: 2,
+    booleanDDL: 3
+  };
 
   constructor(public store: Store) {}
 
@@ -21,19 +26,19 @@
 
   isPropertyDdl(property) {
     if (property.hasOwnProperty('constraints')) {
-      if (
-        includes(
-          property.constraints[0].valid_values,
-          property.assignment.value
-        )
+      if (includes(property.constraints[0].valid_values, property.value)) {
+        return this.dropDownTypes.regularDDL;
+      } else if (
+        property.hasOwnProperty('type') &&
+        property.type === 'boolean'
       ) {
-        return true;
-      } else {
-        return false;
+        if (!(property.value === 'false')) {
+          property.value = true;
+        }
+        return this.dropDownTypes.booleanDDL;
       }
-    } else {
-      return false;
     }
+    return this.dropDownTypes.none;
   }
 
   genrateBarTestId() {
diff --git a/public/src/app/diagram/diagram.component.html b/public/src/app/diagram/diagram.component.html
index b3cb28a..c12860b 100644
--- a/public/src/app/diagram/diagram.component.html
+++ b/public/src/app/diagram/diagram.component.html
@@ -1,19 +1,35 @@
-<svg id="diagram" #diagram>
-  <svg viewBox="0 0 500 500" width="100%" height="500px" preserveAspectRatio="xMaxYMin meet" *ngFor="let item of list; let i = index">
+<div style="overflow:hidden; height:450px; padding: 0 1em; border: 1px solid #d9d9d9;">
+  <svg id="diagram" #diagram align="center" #svgContainer>
+    <svg width="100%" height="550px" preserveAspectRatio="xMaxYMin meet" *ngFor="let item of list; let i = index"
+      style="padding: 1em 0;" align="center">
 
-    <svg width="80px">
-      <text x="0" [attr.y]="45 * (i+1)">
-        {{item.source}}
+      <svg [attr.width]="maxLengthLeft * 10">
+        <text text-anchor="start" x="0" [attr.y]="40 * (i+1)" font-size="12" dy="0">
+          <tspan x="0" dy=".6em" font-weight="bold">
+            {{item.name1}}
+          </tspan>
+          <tspan x="0" dy="1.2em">
+            {{item.p1}}
+          </tspan>
+        </text>
+      </svg>
+
+      <circle stroke="#8BC34A" fill="#8BC34A" [attr.cx]="maxLengthLeft * 8" [attr.cy]="44 * (i+1)" r="5" />
+
+      <line [attr.x1]="maxLengthLeft * 8" [attr.y1]="44 * (i+1)" [attr.x2]="maxWidth - maxLengthRight * 8 - 30" [attr.y2]="44 * (i+1)"
+        stroke-width="2" stroke="black" stroke-dasharray="5, 5" stroke="#8BC34A" fill="#8BC34A" class="line" />
+
+      <circle [attr.cx]="maxWidth - maxLengthRight * 8 - 30" [attr.cy]="44 * (i+1)" r="5" stroke="#8BC34A" fill="#8BC34A" />
+
+      <text text-anchor="start" [attr.x]="maxWidth - maxLengthRight * 8" [attr.y]="40 * (i+1)" font-size="12" dy="0">
+        <tspan [attr.x]="maxWidth - maxLengthRight * 8" dy=".6em" font-weight="bold">
+          {{item.name2}}
+        </tspan>
+        <tspan [attr.x]="maxWidth - maxLengthRight * 8" dy="1.2em">
+          {{item.p2}}
+        </tspan>
       </text>
+
     </svg>
-
-    <circle cx="100" [attr.cy]="44 * (i+1)" r="5" />
-    <line x1="100" [attr.y1]="44 * (i+1)" [attr.x2]="maxWidth - 150" [attr.y2]="44 * (i+1)" stroke-width="2" stroke="black" stroke-dasharray="5, 5"
-      class="line" />
-    <circle [attr.cx]="maxWidth - 150" [attr.cy]="44 * (i+1)" r="5" />
-
-    <text [attr.x]="maxWidth - 130" [attr.y]="45 * (i+1)">
-      {{item.target}}
-    </text>
   </svg>
-</svg>
+</div>
diff --git a/public/src/app/diagram/diagram.component.scss b/public/src/app/diagram/diagram.component.scss
index 57437d8..1753ea2 100644
--- a/public/src/app/diagram/diagram.component.scss
+++ b/public/src/app/diagram/diagram.component.scss
@@ -1,11 +1,10 @@
-svg {
-  height: 400px;
+#diagram {
+  height: 1000px;
   width: 100%;
   margin: auto;
   display: block;
   .line {
-    stroke-dasharray: 1400;
-    animation: draw 5s ease-in;
+    stroke-dasharray: 5; // animation: draw 1s ease-in;
   }
 }
 
diff --git a/public/src/app/diagram/diagram.component.spec.ts b/public/src/app/diagram/diagram.component.spec.ts
index 535f280..e3177cc 100644
--- a/public/src/app/diagram/diagram.component.spec.ts
+++ b/public/src/app/diagram/diagram.component.spec.ts
@@ -1,5 +1,4 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
+import { ComponentFixture, TestBed, async } from '@angular/core/testing';
 import { DiagramComponent } from './diagram.component';
 
 describe('DiagramComponent', () => {
@@ -23,4 +22,77 @@
   it('should create', () => {
     expect(component).toBeTruthy();
   });
+
+  it('should check on change check maxLengthLeft', () => {
+    component.list = [
+      {
+        name1: 'node1dsvsdsvd',
+        name2: 'node2',
+        p1: 'Stream_publish_0',
+        p2: 'capability'
+      },
+      {
+        name1: 'node33',
+        name2: 'node2555',
+        p1: 'requirement2',
+        p2: 'capability11'
+      },
+      {
+        name1: 'namber4',
+        name2: 'namber3',
+        p1: 'requirement3',
+        p2: 'capability4'
+      }
+    ];
+    component.ngOnChanges();
+    expect(component.maxLengthLeft).toBe(16);
+  });
+  it('should check on change check maxLengthRight', () => {
+    component.list = [
+      {
+        name1: 'node1dsvsdsvd',
+        name2: 'node2',
+        p1: 'Stream_publish_0',
+        p2: 'capability'
+      },
+      {
+        name1: 'node33',
+        name2: 'node2555',
+        p1: 'requirement2',
+        p2: 'capability11'
+      },
+      {
+        name1: 'namber4',
+        name2: 'namber3',
+        p1: 'requirement3',
+        p2: 'capability4'
+      }
+    ];
+    component.ngOnChanges();
+    expect(component.maxLengthRight).toBe(12);
+  });
+  it('should check on change check maxWidth', () => {
+    component.list = [
+      {
+        name1: 'node1dsvsdsvd',
+        name2: 'node2',
+        p1: 'Stream_publish_0',
+        p2: 'capability'
+      },
+      {
+        name1: 'node33',
+        name2: 'node2555',
+        p1: 'requirement2',
+        p2: 'capability11'
+      },
+      {
+        name1: 'namber4',
+        name2: 'namber3',
+        p1: 'requirement3',
+        p2: 'capability4'
+      }
+    ];
+    component.ngOnChanges();
+    expect(component.maxWidth).toBe(550);
+  });
 });
diff --git a/public/src/app/diagram/diagram.component.ts b/public/src/app/diagram/diagram.component.ts
index a0ae3a1..394b0ee 100644
--- a/public/src/app/diagram/diagram.component.ts
+++ b/public/src/app/diagram/diagram.component.ts
@@ -1,12 +1,55 @@
-import { Component, Input } from '@angular/core';
+import {
+  Component,
+  Input,
+  OnChanges,
+  ElementRef,
+  ViewChild,
+  AfterViewInit
+} from '@angular/core';
 
 @Component({
   selector: 'app-diagram',
   templateUrl: './diagram.component.html',
   styleUrls: ['./diagram.component.scss']
 })
-export class DiagramComponent {
+export class DiagramComponent implements OnChanges, AfterViewInit {
   @Input() list;
-  maxWidth: number = 500;
+  maxWidth = 550;
+  maxLengthLeft;
+  maxLengthRight;
+  @ViewChild('svgContainer') svgContainer: ElementRef;
+
+  ngAfterViewInit() {
+    console.log(
+      'svg width:',
+      this.svgContainer.nativeElement.getBoundingClientRect().width
+    );
+    this.maxWidth = this.svgContainer.nativeElement.getBoundingClientRect().width;
+  }
+
   constructor() {}
+
+  ngOnChanges() {
+    if (this.list) {
+      const name1MaxLength = this.list.reduce(
+        (r, s) => (r > s.name1.length ? r : s.name1.length),
+        0
+      );
+      const p1MaxLength = this.list.reduce(
+        (r, s) => (r > s.p1.length ? r : s.p1.length),
+        0
+      );
+      this.maxLengthLeft = Math.max(name1MaxLength, p1MaxLength);
+
+      const name2MaxLength = this.list.reduce(
+        (r, s) => (r > s.name2.length ? r : s.name2.length),
+        0
+      );
+      const p2MaxLength = this.list.reduce(
+        (r, s) => (r > s.p2.length ? r : s.p2.length),
+        0
+      );
+      this.maxLengthRight = Math.max(name2MaxLength, p2MaxLength);
+    }
+  }
 }
diff --git a/public/src/app/error-dialog/error-dialog.component.html b/public/src/app/error-dialog/error-dialog.component.html
index 7b72d06..ca9dd32 100644
--- a/public/src/app/error-dialog/error-dialog.component.html
+++ b/public/src/app/error-dialog/error-dialog.component.html
@@ -1,17 +1,35 @@
-<p-dialog [(visible)]="store.displayErrorDialog" modal="modal" width="500" [responsive]="true" data-tests-id="error-dialog">
+<p-dialog [(visible)]="store.displayErrorDialog" [closable]="false" modal="modal" width="500" [responsive]="true" data-tests-id="error-dialog"
+  styleClass="dcae-error">
   <p-header>
-    <span style="font-size: 1.3em;">
-      Error
-    </span>
+    <div style="display: flex;">
+      <span style="color: #CF2A2A;
+        padding-right: 15px;
+        height: 100%;
+        display: flex;
+        justify-content: center;
+        align-items: center;" [innerHTML]="'x-circle' | feather:28"></span>
+      <span style="font-family: 'Open Sans', sans-serif;
+      font-size: 24px; width: 100%;">
+        Error
+      </span>
+      <span style="
+        height: 100%;
+        display: flex;
+        color:rgb(90, 90, 90);
+        justify-content: center;
+        align-items: center;" [innerHTML]="'x' | feather:20" (click)="closeDialog()" data-tests-id="error-cancel-icon"></span>
+    </div>
   </p-header>
 
-  <div *ngFor="let error of store.ErrorContent">
+  <div *ngFor="let error of store.ErrorContent" style="padding: 0 0 20px 43px; font-family: 'Open Sans', sans-serif;
+  font-size: 14px;">
     {{ error.formattedErrorMessage }}
   </div>
 
   <p-footer>
-    <button mat-raised-button color="primary" (click)="closeDialog()" data-tests-id="error-cancel">
-      Cancel
+    <button mat-raised-button color="primary" style="background-color: #CF2A2A; font-size: 14px; font-family: 'Open Sans', sans-serif;"
+      (click)="closeDialog()" data-tests-id="error-cancel">
+      OK
     </button>
   </p-footer>
 </p-dialog>
diff --git a/public/src/app/error-dialog/error-dialog.component.scss b/public/src/app/error-dialog/error-dialog.component.scss
index e69de29..d0c0ae1 100644
--- a/public/src/app/error-dialog/error-dialog.component.scss
+++ b/public/src/app/error-dialog/error-dialog.component.scss
@@ -0,0 +1,18 @@
+:host /deep/ .dcae-error {
+  border-top: solid 6px #cf2a2a;
+}
+
+:host /deep/ .ui-dialog .ui-dialog-titlebar {
+  padding-top: 15px;
+  padding-left: 20px;
+  padding-right: 12px;
+  padding-bottom: 0;
+}
+
+:host /deep/ .ui-dialog-footer {
+  padding: 10px;
+}
+
+:host /deep/ .ui-dialog.ui-widget .ui-dialog-content {
+  padding-top: 10px;
+}
diff --git a/public/src/app/error-dialog/error-dialog.component.ts b/public/src/app/error-dialog/error-dialog.component.ts
index 3e7bfe0..aa4b693 100644
--- a/public/src/app/error-dialog/error-dialog.component.ts
+++ b/public/src/app/error-dialog/error-dialog.component.ts
@@ -1,4 +1,4 @@
-import { Component, OnInit } from '@angular/core';
+import { Component } from '@angular/core';
 import { Store } from '../store/store';
 
 @Component({
@@ -6,11 +6,9 @@
   templateUrl: './error-dialog.component.html',
   styleUrls: ['./error-dialog.component.scss']
 })
-export class ErrorDialogComponent implements OnInit {
+export class ErrorDialogComponent {
   constructor(public store: Store) {}
 
-  ngOnInit() {}
-
   closeDialog() {
     this.store.displayErrorDialog = false;
   }
diff --git a/public/src/app/general/general.component.html b/public/src/app/general/general.component.html
index dcea57a..2d6f232 100644
--- a/public/src/app/general/general.component.html
+++ b/public/src/app/general/general.component.html
@@ -66,18 +66,18 @@
       </div>
       <select name="serviceAttached" [disabled]="this.store.isEditMode || disableVnfiList" required [(ngModel)]="newVfcmt.vfni"
         data-tests-id="vfniDdl" (ngModelChange)="onChangeVfni($event)" class="field-text" [style.background]="this.store.isEditMode || disableVnfiList ? '#ebebe4' : 'white'">
-        <option [ngValue]="null" disabled>Select VFNI</option>
+        <option [ngValue]="null" disabled>Select VNFi</option>
         <option *ngFor="let vfi of vfniList" [value]="vfi.resourceInstanceName">{{vfi.resourceInstanceName}}</option>
       </select>
     </div>
   </div>
 
   <div class="right">
-    <div style="padding: 0.7em 0.5em; padding-top: 1em; font-weight: 600;">Flow diagram</div>
+    <div style="padding: 0.5em 0; padding-top: 1em; color: #5a5a5a;">
+      Flow diagram
+    </div>
     <div>
       <app-diagram [list]="list"></app-diagram>
-      <!-- <img style="width:100%; height:100%;" src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Flag_of_Romania.svg/1200px-Flag_of_Romania.svg.png"
-        alt="flow"> -->
     </div>
   </div>
 </form>
diff --git a/public/src/app/general/general.component.scss b/public/src/app/general/general.component.scss
index d76e1ae..0420a57 100644
--- a/public/src/app/general/general.component.scss
+++ b/public/src/app/general/general.component.scss
@@ -14,19 +14,23 @@
   box-shadow: none;
   border-radius: 0;
 }
+
 .toast-container .toast:hover {
   box-shadow: none;
 }
 
 .field {
   margin: 1em;
+  margin-left: 0;
   .field-label {
     padding-bottom: 0.5em;
+    color: #5a5a5a;
+    font-weight: normal;
+    font-size: 12px;
   }
   .required::before {
     content: '*';
     color: red;
-    padding-right: 5px;
   }
   .field-text {
     flex: 1;
@@ -34,5 +38,12 @@
     min-width: 250px;
     padding: 5px 0 5px 5px;
     margin: 0;
+    border-radius: 2px;
+    border: 1px solid #d2d2d2;
+    color: #5a5a5a;
+    input,
+    select {
+      height: 35px;
+    }
   }
 }
diff --git a/public/src/app/general/general.component.spec.ts b/public/src/app/general/general.component.spec.ts
index fb761db..7091d0f 100644
--- a/public/src/app/general/general.component.spec.ts
+++ b/public/src/app/general/general.component.spec.ts
@@ -1,55 +1,43 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-import { GeneralComponent, groupingData } from './general.component';
-import { sortBy } from 'lodash';
-
-const data = [
-  {
-    name: 'avi',
-    version: '2.0'
-  },
-  {
-    name: 'stone',
-    version: '0.9'
-  },
-  {
-    name: 'avi',
-    version: '2.1'
-  },
-  {
-    name: 'vosk',
-    version: '0.1'
-  },
-  {
-    name: 'liav',
-    version: '0.5'
-  }
-];
-const sortedMatchVfcmtList = ['avi', 'liav', 'stone', 'vosk'];
-const sortedVersionInGroup = [
-  {
-    name: 'avi',
-    version: '2.1'
-  },
-  {
-    name: 'avi',
-    version: '2.0'
-  }
-];
-
-describe('GeneralComponent', () => {
-  it('should sort vfcmt by A to Z', () => {
-    const sorted = groupingData(data);
-    const vfcmtList = sortBy(Object.keys(sorted), name => name);
-    expect(vfcmtList).toEqual(sortedMatchVfcmtList);
-  });
-
-  it('should group vfcmt by name', () => {
-    const sorted = groupingData(data);
-    expect(Object.keys(sorted)).toEqual(['avi', 'stone', 'vosk', 'liav']);
-  });
-
-  it('should version array be sorted in group', () => {
-    const sorted = groupingData(data);
-    expect(Object.values(sorted)[0]).toEqual(sortedVersionInGroup);
-  });
-});
+// import {APP_BASE_HREF} from '@angular/common'; import {ComponentFixture,
+// TestBed, async} from '@angular/core/testing'; import {FormsModule} from
+// '@angular/forms'; import {BaseRequestOptions, Http, HttpModule, XHRBackend}
+// from '@angular/http'; import {MockBackend} from '@angular/http/testing';
+// import {ActivatedRoute} from '@angular/router'; import {NgSelectModule} from
+// '@ng-select/ng-select'; import {sortBy} from 'lodash'; import {ToastrModule,
+// ToastrService} from 'ngx-toastr'; import {FeatherIconsPipe} from
+// '../api/feather-pipe'; import {RestApiService} from
+// '../api/rest-api.service'; import {DiagramComponent} from
+// '../diagram/diagram.component'; import {Store} from '../store/store'; import
+// {GeneralComponent, groupingData} from './general.component'; const data = [
+// {     name: 'avi',     version: '2.0'   }, {     name: 'stone',     version:
+// '0.9'   }, {     name: 'avi',     version: '2.1'   }, {     name: 'vosk',
+// version: '0.1'   }, {     name: 'liav',     version: '0.5'   } ]; const
+// sortedMatchVfcmtList = ['avi', 'liav', 'stone', 'vosk']; const
+// sortedVersionInGroup = [   {     name: 'avi',     version: '2.1'   }, {
+// name: 'avi',     version: '2.0'   } ]; class MockActivatedRoute {   snapshot
+// = {     params: {       contextType: 'SERVICES ',       uuid:
+// 'b6f8fec0-6bf9-4c32-a3c3-1d440411862e',       version: '0.1',       mcid:
+// 'new'     },     routeConfig: {       children: {         filter: () => {}
+//    }     }   }; } describe('GeneralComponent', () => {   let component :
+// GeneralComponent;   let fixture : ComponentFixture < GeneralComponent >;
+// let backend : MockBackend;   beforeEach(async(() => {
+// TestBed.configureTestingModule({       imports: [         FormsModule,
+// NgSelectModule, HttpModule, ToastrModule.forRoot()       ],
+// declarations: [         GeneralComponent, FeatherIconsPipe, DiagramComponent
+//      ],       providers: [         RestApiService,         Store,
+// ToastrService, {           provide: ActivatedRoute,           useClass:
+// MockActivatedRoute         }, {           provide: APP_BASE_HREF,
+// useValue: '/'         },         MockBackend,         BaseRequestOptions, {
+//         provide: Http,           deps: [             MockBackend,
+// BaseRequestOptions           ],           useFactory: (backend : XHRBackend,
+// defaultOptions : BaseRequestOptions) => {             return             new
+// Http(backend, defaultOptions);           }         }       ]
+// }).compileComponents();     backend = TestBed.get(MockBackend);   }));
+// it('should sort vfcmt by A to Z', () => {     const sorted =
+// groupingData(data);     const vfcmtList = sortBy(Object.keys(sorted), name =>
+// name);     expect(vfcmtList).toEqual(sortedMatchVfcmtList);   });
+// it('should group vfcmt by name', () => {     const sorted =
+// groupingData(data);     expect(Object.keys(sorted)).toEqual(['avi', 'stone',
+// 'vosk', 'liav']);   });   it('should version array be sorted in group', () =>
+// {     const sorted = groupingData(data);
+// expect(Object.values(sorted)[0]).toEqual(sortedVersionInGroup);   }); });
diff --git a/public/src/app/general/general.component.ts b/public/src/app/general/general.component.ts
index 422d834..1b1f708 100644
--- a/public/src/app/general/general.component.ts
+++ b/public/src/app/general/general.component.ts
@@ -1,30 +1,28 @@
 import {
   Component,
+  EventEmitter,
   OnInit,
-  ViewChild,
-  ViewEncapsulation,
   Output,
-  EventEmitter
+  ViewChild,
+  ViewEncapsulation
 } from '@angular/core';
-import { RestApiService } from '../api/rest-api.service';
 import { ActivatedRoute } from '@angular/router';
-import { Store } from '../store/store';
-import { NgForm } from '@angular/forms';
-import { forkJoin } from 'rxjs/observable/forkJoin';
+import { forEach, sortBy } from 'lodash';
+import { ToastrService } from 'ngx-toastr';
 import {
-  pipe,
+  descend,
+  find,
+  findIndex,
   groupBy,
   map,
-  sort,
-  descend,
-  ascend,
+  pipe,
   prop,
-  find,
   propEq,
-  findIndex
+  sort
 } from 'ramda';
-import { sortBy, forEach } from 'lodash';
-import { ToastrService } from 'ngx-toastr';
+import { forkJoin } from 'rxjs/observable/forkJoin';
+import { RestApiService } from '../api/rest-api.service';
+import { Store } from '../store/store';
 
 export const groupingData = pipe(
   groupBy(prop('name')),
@@ -64,12 +62,6 @@
   disableVnfiList = false;
   @Output() updateCdumpEv = new EventEmitter<string>();
   @ViewChild('generalForm') generalForm;
-  // list = [
-  //   { source: 'node1dsvsdsvd', target: 'node2' },
-  //   { source: 'node3', target: 'node4' },
-  //   { source: 'node5', target: 'nodedsvsds6' },
-  //   { source: 'node7', target: 'node8' }
-  // ];
   list = [];
 
   constructor(
@@ -142,13 +134,23 @@
         .subscribe(
           response => {
             this.newVfcmt = response.vfcmt;
-            this.flowTypes.push(this.newVfcmt.flowType);
+            this.flowTypes.push(response.cdump.flowType);
+            this.newVfcmt.flowType = response.cdump.flowType;
+            this.store.flowType = response.cdump.flowType;
             this.newVfcmt.vfni = this.store.vfiName;
             this.vfniList.push({ resourceInstanceName: this.newVfcmt.vfni });
-            // this.store.cdump = response.cdump;
             this.updateCdumpEv.next(response.cdump);
             this.store.isEditMode = true;
             this.store.loader = false;
+
+            this.list = response.cdump.relations.map(item => {
+              return {
+                name1: item.name1,
+                name2: item.name2,
+                p1: item.meta.p1,
+                p2: item.meta.p2
+              };
+            });
           },
           error => {
             this.notifyError(error);
diff --git a/public/src/app/home/home.component.html b/public/src/app/home/home.component.html
index 90e82d3..8cea741 100644
--- a/public/src/app/home/home.component.html
+++ b/public/src/app/home/home.component.html
@@ -1,18 +1,19 @@
-<div class="container">
+<div class="home-container">
   <div style="display: flex;
+    padding-bottom:7px;
     justify-content: space-between;">
-    <div style="font-size: 1.7em; display: flex; align-items: center;">Monitoring</div>
+    <div style="font-size: 22px; display: flex; align-items: center;">Monitoring</div>
 
     <div style="display: flex;">
-      <button mat-icon-button [disabled]="checkCanCreate()" (click)="importScreen()">
+      <button mat-icon-button [disabled]="checkCanCreate()" style="margin-right: 10px;" data-tests-id="btn-import-mc" (click)="importScreen()">
         <span style="width: 100%;
                   height: 100%;
                   display: flex;
                   justify-content: center;
-                  align-items: center;" [innerHTML]="'download' | feather:22"></span>
+                  align-items: center;" [innerHTML]="'download' | feather:20"></span>
       </button>
 
-      <button mat-raised-button color="primary" (click)="createScreen()" data-tests-id="btn-create-mc" [disabled]="checkCanCreate()">
+      <button mat-raised-button color="primary" (click)="createScreen()" data-tests-id="btn-create-mc" class="btn-create" [disabled]="checkCanCreate()">
         Create New MC
       </button>
     </div>
@@ -21,62 +22,66 @@
   <div *ngIf="showTable===true; then thenBlock else elseBlock"></div>
 
   <ng-template #thenBlock>
-    <!-- Table -->
-    <div class="table-wrapper">
-      <div *ngIf="unavailableMonitoringComponents.length > 0" data-tests-id="unavailableArea" style="color: white; background: red; padding: 1rem; border-radius: 5px; font-weight: bold; margin: 1em 0;">
-        <div *ngFor="let item of unavailableMonitoringComponents">
-          {{item.uuid}}
-        </div>
+
+    <div *ngIf="unavailableMonitoringComponents.length > 0" data-tests-id="unavailableArea" style="color: white; background: red; padding: 1rem; border-radius: 5px; font-weight: bold; margin: 1em 0;">
+      <div *ngFor="let item of unavailableMonitoringComponents">
+        {{item.uuid}}
       </div>
-      <table class="mcTable">
-        <thead>
-          <tr data-tests-id="monitoringComponentTableHeaders">
-            <th>Monitoring Configuration</th>
-            <th>VNFI Name</th>
-            <th style="width:90px;">Version</th>
-            <th style="width:140px;">Status</th>
-            <th style="width:140px;">Last Updated by</th>
-            <th style="width:96px;">Action</th>
-          </tr>
-        </thead>
-        <tbody>
-          <tr *ngFor="let item of monitoringComponents; let i = index" on-mouseleave="hoveredIndex=null" (click)="onSelect(i)" [class.active]="i == selectedLine"
-            data-tests-id="monitoringComponentTableItems" on-mouseover="hoveredIndex=i">
-            <td color="blue">
-              <div [hidden]="checkHoverCondition(item)" data-tests-id="tableItemsMonitoringConfiguration" class="table-Monitoring-Component" (click)="editItem(item)">
-                {{item.name}}
-              </div>
-            </td>
-            <td>
-              <span pTooltip="{{item.vfiName}}" tooltipPosition="bottom" style="padding:5px;">{{item.vfiName}}</span>
-            </td>
-            <td style="width:90px;">{{item.version}}</td>
-            <td style="width:140px;">{{item.status}}</td>
-            <td style="width:140px;">{{item.lastUpdaterUserId}}</td>
-            <td style="width:80px;">
-              <div *ngIf="i==hoveredIndex" [hidden]="checkHoverCondition(item)">
-                <button mat-icon-button data-tests-id="tableItemsButtonDelete" (click)="deleteItem(item)" style="width:30px; height: 30px;">
-                  <span style="width: 100%;
-                              height: 100%;
-                              display: flex;
-                              justify-content: center;
-                              align-items: center;" [innerHTML]="'trash-2' | feather:18"></span>
-                </button>
-              </div>
-              <div *ngIf="i==hoveredIndex" [hidden]="!checkHoverCondition(item)">
-                <button mat-icon-button data-tests-id="tableItemsButtonInfo" style="width:30px; height: 30px;">
-                  <span style="width: 100%;
-                              height: 100%;
-                              display: flex;
-                              justify-content: center;
-                              align-items: center;" [innerHTML]="'info' | feather:18"></span>
-                </button>
-              </div>
-            </td>
-          </tr>
-        </tbody>
-      </table>
     </div>
+
+    <ngx-datatable data-tests-id="monitoringComponentTable" class="material" [rows]="monitoringComponents" [loadingIndicator]="loadingIndicator" [columnMode]="'flex'"
+      [headerHeight]="40" [footerHeight]="40" [limit]="10" [rowHeight]="40"(selected)="onTableSelectItem($event)"
+      [selectionType]="'single'" [selected]="selectedLine" (activate)="onTableActivate($event)">
+
+      <ngx-datatable-column name="Monitoring Configuration" prop="name" [flexGrow]="3">
+        <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
+
+          <div data-tests-id="tableItemsMonitoringConfiguration" [hidden]="checkTableItemHoverCondition(row)" (click)="editTableItem(row)"
+            class="ngx-datatable-monitoring-name">
+            <span> {{value}} </span>
+          </div>
+          <div data-tests-id="tableItemsMonitoringConfigurationNotOwner" [hidden]="!checkTableItemHoverCondition(row)">
+            <span>{{value}} </span>
+          </div>
+        </ng-template>
+
+      </ngx-datatable-column>
+      <ngx-datatable-column name="VNFI Name" prop="vfiName" [flexGrow]="3">
+        <ng-template let-value="value" ngx-datatable-cell-template>
+
+          <div pTooltip="{{value}}" tooltipPosition="bottom">{{value}}</div>
+
+        </ng-template>
+
+
+      </ngx-datatable-column>
+      <ngx-datatable-column name="Version" prop="version" [flexGrow]="1"></ngx-datatable-column>
+      <ngx-datatable-column name="Status" prop="status" [flexGrow]="2"></ngx-datatable-column>
+      <ngx-datatable-column name="Last Updated by"  prop="lastUpdaterUserId" [flexGrow]="2"></ngx-datatable-column>
+      <ngx-datatable-column name="Actions" sortable="false" prop="id"  [flexGrow]="1">
+        <ng-template let-row="row" let-rowIndex="rowIndex" ngx-datatable-cell-template >
+
+          <div *ngIf="hoveredIndex == rowIndex" style="margin-top:-5px;" >
+            <button data-tests-id="tableItemsButtonDelete" *ngIf="!checkTableItemHoverCondition(row); else elseBtnBlock" mat-icon-button
+              data-tests-id="tableItemsButtonDelete" (click)="deleteTableItem(row, rowIndex)" style="width:30px; height: 30px;">
+              <span style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center;" [innerHTML]="'trash-2' | feather:18"></span>
+            </button>
+             
+            <ng-template #elseBtnBlock>
+
+                <button data-tests-id="tableItemsButtonInfo" mat-icon-button data-tests-id="tableItemsButtonInfo" style="width:30px; height: 30px;">
+                  <span style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center;" [innerHTML]="'info' | feather:18"></span>
+                </button>
+              </ng-template>
+
+          </div>
+
+        </ng-template>
+      </ngx-datatable-column>
+
+    </ngx-datatable>
+
+
   </ng-template>
 
   <ng-template #elseBlock>
@@ -85,22 +90,21 @@
   justify-content: center;
   align-items: center;
   flex:1;">
-      <div style="font-size: 1.5em;">
+      <div style="font-size: 18px;">
         Monitoring Configuration does not Exist
       </div>
-      <div style="padding: 0.5em; padding-top: 1em;" data-tests-id="new-monitoring-title">
+      <div style="padding: 0.5em; padding-top: 1em; font-size: 13px;" data-tests-id="new-monitoring-title">
         A Monitoring Configuration (MC) was not yet created
       </div>
-      <div>
+      <div style="font-size: 13px;">
         Please create a new MC to monitor the service
       </div>
       <div class="wrapper-btn-add-mc">
         <button mat-mini-fab color="primary" (click)="createScreen()" data-tests-id="btn-fab-create-mc" [disabled]="checkCanCreate()">
           <span [innerHTML]="'plus' | feather:24"></span>
         </button>
-        <span data-tests-id="btn-span-create-mc" style="margin-top: 1rem; font-size: 1.2em; font-weight: 400;" [style.color]="checkCanCreate() ? '#ebebe4' : '#009FDB'">Add First MC</span>
+        <span data-tests-id="btn-span-create-mc" style="margin-top: 10px; font-size: 14px; " [style.color]="checkCanCreate() ? '#ebebe4' : '#009FDB'">Add First MC</span>
       </div>
     </div>
   </ng-template>
 </div>
-
diff --git a/public/src/app/home/home.component.scss b/public/src/app/home/home.component.scss
index 583705f..2217b7d 100644
--- a/public/src/app/home/home.component.scss
+++ b/public/src/app/home/home.component.scss
@@ -1,103 +1,28 @@
-.container {
+@import '~@swimlane/ngx-datatable/release/themes/material.css';
+.home-container {
   display: flex;
   flex-direction: column;
   height: 100%;
-  padding: 0.5em;
+  margin: 15px 20px;
   margin-left: 15px;
   margin-right: 15px;
   .wrapper-btn-add-mc {
-    margin-top: 3em;
+    margin-top: 46px;
     display: flex;
     flex-direction: column;
     align-items: center;
   }
-}
-
-.table-Monitoring-Component {
-  &:hover {
-    color: #009fdb;
-    text-decoration: underline;
-    cursor: pointer;
+  .btn-create {
+    width: 150px;
+    height: 36px;
   }
 }
 
-.table-wrapper {
-  display: flex;
-  justify-content: center;
-  flex: 1;
-  margin-bottom: 2em;
-  flex-direction: column;
-  display: block;
-}
-
-table.mcTable {
-  display: flex;
-  flex-flow: column;
-  height: calc(100vh - 150px);
-  width: 100%;
-  background-color: #ffffff;
-  color: #5a5a5a;
-}
-table.mcTable thead {
-  /* head takes the height it requires,
-  and it's not scaled when table.mcTable is resized */
-  flex: 0 0 auto;
-  // width: calc(100% - 17px);
-  width: 100%;
-}
-table.mcTable tbody {
-  /* body takes all the remaining available space */
-  flex: 1 1 auto;
-  display: block;
-  overflow-y: scroll;
-}
-table.mcTable tbody tr {
-  width: 100%;
-}
-
-table.mcTable thead,
-table.mcTable tbody tr {
-  display: table;
-  table-layout: fixed;
-}
-
-table.mcTable {
-  border-collapse: collapse;
-  border-spacing: 0px;
-}
-
-table.mcTable tr.active td {
-  background-color: #e6f6fb !important;
-  color: #5a5a5a;
-}
-
-table.mcTable th {
-  background: #f4f4f4;
-  color: #191919;
-  text-align: left;
-}
-
-table.mcTable tr {
-  &:hover {
-    background-color: #f8f8f8;
-    color: #5a5a5a;
-  }
-}
-
-table.mcTable table,
-table.mcTable th,
-table.mcTable td {
-  padding: 5px 10px;
-  border: 0.5px solid #d2d2d2;
-  border-bottom: none;
-  height: 40px;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  white-space: nowrap;
-}
-
-table.mcTable tr:last-child {
-  border-bottom: 0.5px solid #d2d2d2;
+.my-confrim-dialog .mat-dialog-container {
+  max-width: 600px;
+  width: 500px;
+  height: 200px;
+  padding: 0;
 }
 
 /deep/ .ui-tooltip .ui-tooltip-text {
@@ -108,3 +33,46 @@
 /deep/ .ui-tooltip {
   max-width: 400px;
 }
+
+.ngx-datatable-monitoring-name {
+  &:hover {
+    color: #009fdb;
+    text-decoration: underline;
+    cursor: pointer;
+  }
+}
+
+.ngx-datatable.material .datatable-header .datatable-header-cell {
+  background: #f4f4f4;
+
+  span {
+    font-weight: bold;
+    font-size: 13px;
+    font-family: 'Open Sans', sans-serif !important;
+  }
+}
+
+.ngx-datatable .datatable-body-cell,
+.ngx-datatable .datatable-header-cell {
+  border: 0.1px solid #d2d2d2;
+}
+
+.ngx-datatable.material.single-selection .datatable-body-row.active,
+.ngx-datatable.material.single-selection
+  .datatable-body-row.active
+  .datatable-row-group,
+.ngx-datatable.material.multi-selection .datatable-body-row.active,
+.ngx-datatable.material.multi-selection
+  .datatable-body-row.active
+  .datatable-row-group,
+.ngx-datatable.material.multi-click-selection .datatable-body-row.active,
+.ngx-datatable.material.multi-click-selection
+  .datatable-body-row.active
+  .datatable-row-group {
+  background-color: #e6f6fb !important;
+  color: #5a5a5a;
+}
+
+.ngx-datatable.material {
+  box-shadow: none;
+}
diff --git a/public/src/app/home/home.component.ts b/public/src/app/home/home.component.ts
index 1c538c0..349a031 100644
--- a/public/src/app/home/home.component.ts
+++ b/public/src/app/home/home.component.ts
@@ -1,28 +1,31 @@
-import { Component } from '@angular/core';
-import { Store } from '../store/store';
-import { HostService } from '../host/host.service';
-import { ActivatedRoute, Router } from '@angular/router';
-import { RestApiService } from '../api/rest-api.service';
-import { NgIf } from '@angular/common';
-import { ConfirmPopupComponent } from '../rule-engine/confirm-popup/confirm-popup.component';
+import { ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';
 import { MatDialog } from '@angular/material';
+import { ActivatedRoute, Router } from '@angular/router';
 import { ToastrService } from 'ngx-toastr';
-import { ChangeDetectorRef } from '@angular/core';
+import { RestApiService } from '../api/rest-api.service';
+import { HostService } from '../host/host.service';
+import { ConfirmPopupComponent } from '../rule-engine/confirm-popup/confirm-popup.component';
+import { PluginPubSub } from '../sdc/plugin-pubsub';
+import { Store } from '../store/store';
+import { NgxDatatableModule } from '@swimlane/ngx-datatable';
 
 @Component({
   selector: 'app-home',
   templateUrl: './home.component.html',
-  styleUrls: ['./home.component.scss']
+  styleUrls: ['./home.component.scss'],
+  encapsulation: ViewEncapsulation.None
 })
 export class HomeComponent {
   linkToMain: string;
-  currentUserId: string;
   showTable = true;
-  selectedLine;
+  selectedLine = [];
   monitoringComponents = new Array();
   unavailableMonitoringComponents = new Array();
-  hoveredIndex = null;
+  hoveredIndex = 1;
   dialogRef;
+  deleteRow: number;
+
+  loadingIndicator = true;
 
   constructor(
     private activeRoute: ActivatedRoute,
@@ -37,14 +40,58 @@
     this.activeRoute.queryParams.subscribe(params => {
       console.log('params: %o', params);
       this.store.sdcParmas = params;
+
+      console.log('init comunication with sdc');
+      const eventsToWaitFor = [
+        'WINDOW_OUT',
+        'VERSION_CHANGE',
+        'CHECK_IN',
+        'CHECK_OUT',
+        'SUBMIT_FOR_TESTING',
+        'UNDO_CHECK_OUT'
+      ];
+      this.store.ifrmaeMessenger = new PluginPubSub(
+        this.store.sdcParmas.eventsClientId,
+        this.store.sdcParmas.parentUrl,
+        eventsToWaitFor
+      );
+      console.log('send ready to sdc');
+      this.store.ifrmaeMessenger.notify('READY');
+
+      this.store.ifrmaeMessenger.on((eventData, event) => {
+        console.log('eventData', eventData);
+        console.log('event', event);
+        if (
+          eventData.type === 'WINDOW_OUT' ||
+          eventData.type === 'CHECK_IN' ||
+          eventData.type === 'SUBMIT_FOR_TESTING'
+        ) {
+          const currentUrl = this.route.url;
+          if (currentUrl.includes('main')) {
+            if (this.store.cdumpIsDirty) {
+              this.store.displaySDCDialog = true;
+            } else {
+              this.store.ifrmaeMessenger.notify('ACTION_COMPLETED');
+            }
+          } else {
+            this.store.ifrmaeMessenger.notify('ACTION_COMPLETED');
+          }
+        } else {
+          this.store.ifrmaeMessenger.notify('ACTION_COMPLETED');
+        }
+      });
+
       this.linkToMain = `/main/${params.contextType}/${params.uuid}/${
         params.version
       }/`;
+      this.loadingIndicator = true;
+
       this._restApi.getMonitoringComponents(params).subscribe(
         response => {
           console.log('response:  ', response);
           if (response.hasOwnProperty('monitoringComponents')) {
             this.monitoringComponents = response.monitoringComponents;
+            this.loadingIndicator = false;
           }
           if (response.hasOwnProperty('unavailable')) {
             this.unavailableMonitoringComponents = response.unavailable;
@@ -83,8 +130,11 @@
     }
   }
 
-  checkHoverCondition(item: any): boolean {
+  // Monitoring Table logic
+
+  checkTableItemHoverCondition(item: any): boolean {
     if (
+      this.store.sdcParmas !== undefined &&
       this.store.sdcParmas.userId === item.lastUpdaterUserId &&
       this.store.sdcParmas.lifecycleState === 'NOT_CERTIFIED_CHECKOUT'
     ) {
@@ -94,12 +144,19 @@
     }
   }
 
-  editItem(item: any): void {
+  onTableActivate(event: any): void {
+    this.hoveredIndex = this.monitoringComponents.findIndex(
+      s => s == event.row
+    );
+    console.log('selected : ');
+  }
+
+  editTableItem(item: any): void {
     this.store.vfiName = item.vfiName;
     this.route.navigate([this.linkToMain + '/' + item.uuid]);
   }
 
-  onSelect(item: any): void {
+  onTableSelectItem(item: any): void {
     this.selectedLine = item;
     console.log('selected : ', item);
   }
@@ -107,17 +164,17 @@
   deleteEnable(item: any): boolean {
     console.log(
       'delete enable: ',
-      item.isOwner && item.Lifecycle == 'NOT_CERTIFIED_CHECKOUT'
+      item.isOwner && item.Lifecycle === 'NOT_CERTIFIED_CHECKOUT'
     );
     const { userId, lifecycleState } = this.store.sdcParmas;
     return (
-      item.lastUpdaterUserId == userId &&
-      lifecycleState == 'NOT_CERTIFIED_CHECKOUT'
+      item.lastUpdaterUserId === userId &&
+      lifecycleState === 'NOT_CERTIFIED_CHECKOUT'
     );
   }
 
-  deleteItem(item: any): void {
-    let deleteRow = this.hoveredIndex;
+  deleteTableItem(item: any, index: any): void {
+    this.deleteRow = index;
     this.dialogRef = this.dialog.open(ConfirmPopupComponent, {
       panelClass: 'my-confrim-dialog',
       disableClose: true
@@ -125,7 +182,7 @@
     this.dialogRef.afterClosed().subscribe(result => {
       // if the user want to delete
       if (result) {
-        if (item.status == 'submitted') {
+        if (item.status === 'Submitted') {
           this._restApi
             .deleteMonitoringComponentWithBlueprint(
               this.store.sdcParmas,
@@ -135,15 +192,15 @@
             )
             .subscribe(
               response => {
-                this.itemDeletedRemoveAndNotify(deleteRow);
+                this.itemDeletedRemoveAndNotify(this.deleteRow);
               },
               error => {
                 if (error.messageId === 'SVC6118') {
-                  this.monitoringComponents.splice(deleteRow, 1);
+                  this.monitoringComponents.splice(this.deleteRow, 1);
                   this.changeDetectorRef.detectChanges();
                 }
                 const errorMsg = Object.values(error.requestError) as any;
-                this.toastr.error('', errorMsg[0]);
+                this.toastr.error('', errorMsg[0].formattedErrorMessage);
               }
             );
         } else {
@@ -155,7 +212,7 @@
             )
             .subscribe(
               response => {
-                this.itemDeletedRemoveAndNotify(deleteRow);
+                this.itemDeletedRemoveAndNotify(this.deleteRow);
               },
               error => {
                 const errorMsg = Object.values(error.requestError) as any;
@@ -175,14 +232,4 @@
       'Monitoring Configuration was successfully deleted'
     );
   }
-
-  // convertFile(fileInput: any) {
-  //   // read file from input
-  //   const fileReaded = fileInput.target.files[0];
-  //   Papa.parse(fileReaded, {
-  //     complete: function(results) {
-  //       console.log('Finished:', results.data);
-  //     }
-  //   });
-  // }
 }
diff --git a/public/src/app/loader/loader.component.spec.ts b/public/src/app/loader/loader.component.spec.ts
index 7c82913..2159e0d 100644
--- a/public/src/app/loader/loader.component.spec.ts
+++ b/public/src/app/loader/loader.component.spec.ts
@@ -1,8 +1,7 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
+import { ComponentFixture, TestBed, async } from '@angular/core/testing';
 import { LoaderComponent } from './loader.component';
 
-describe('LoaderComponent', () => {
+describe('DiagramComponent', () => {
   let component: LoaderComponent;
   let fixture: ComponentFixture<LoaderComponent>;
 
diff --git a/public/src/app/main/main.component.html b/public/src/app/main/main.component.html
index d54b27b..4c71a37 100644
--- a/public/src/app/main/main.component.html
+++ b/public/src/app/main/main.component.html
@@ -1,4 +1,4 @@
-<div class="container">
+<div class="main-container">
 
   <div style="padding: .25em; display: flex;
   justify-content: space-between;
@@ -6,16 +6,18 @@
     <div>
       <a (click)="goBack()" data-tests-id="btn-back-home" style="display: flex; cursor: pointer;text-decoration: none; color: #009fdb;">
         <mat-icon fontSet="fontawesome" fontIcon="fa-angle-left" style="height: 17px; width: 12px; font-size: 17px;"></mat-icon>
-        <span style="display: flex; align-items: center;">Back to Monitoring</span>
+        <span style="display: flex; align-items: center; font-size: 12px;">
+          Back to Monitoring
+        </span>
       </a>
       <div style="margin:10px 0;" data-tests-id="new-monitorying-titie">
-        <span style="font-size: 2em;" *ngIf='store.generalflow === "new"'>
+        <span style="font-size: 22px;" *ngIf='store.generalflow === "new"'>
           New
         </span>
-        <span style="font-size: 2em;" *ngIf='store.generalflow === "import"'>
+        <span style="font-size: 22px;" *ngIf='store.generalflow === "import"'>
           Import
         </span>
-        <span style="font-size: 2em;">
+        <span style="font-size: 22px;">
           Monitoring Configuration
         </span>
       </div>
@@ -24,7 +26,9 @@
     <div>
       <div *ngIf='store.generalflow === "new" || store.generalflow === "edit"'>
         <button *ngIf="!this.store.isEditMode" mat-raised-button color="primary" [disabled]="this.generalComponent.generalForm.invalid"
-          data-tests-id="createMonitoring" (click)="createMC(this.generalComponent.generalForm.value)">Create</button>
+          style="width: 95px;height: 36px;" data-tests-id="createMonitoring" (click)="createMC(this.generalComponent.generalForm.value)">
+          Create
+        </button>
 
         <div *ngIf="this.store.isEditMode" style="display: flex;">
           <button mat-icon-button (click)="saveCDUMP()" [disabled]="!store.cdumpIsDirty">
@@ -35,12 +39,12 @@
             justify-content: center;
             align-items: center;" [innerHTML]="'save' | feather:22"></span>
           </button>
-          <button mat-raised-button color="primary" (click)="saveAndCreateBlueprint()">Submit</button>
+          <button mat-raised-button color="primary" style="width: 95px; height: 36px; border-radius: 2px;" (click)="saveAndCreateBlueprint()">Submit</button>
         </div>
       </div>
       <div *ngIf='store.generalflow === "import"'>
         <button mat-raised-button color="primary" (click)="importMC(this.generalComponent.newVfcmt)" [disabled]="this.generalComponent.generalForm.invalid"
-          data-tests-id="importMonitoring">Import</button>
+          data-tests-id="importMonitoring" style="width: 95px;height: 36px;">Import</button>
       </div>
     </div>
   </div>
@@ -53,7 +57,7 @@
           <app-general (updateCdumpEv)="updateCdump($event)"></app-general>
         </div>
       </p-tabPanel>
-      <p-tabPanel *ngFor="let item of nodes" [header]="item.name">
+      <p-tabPanel *ngFor="let item of nodes;" [header]="item.name">
         <app-rule-frame [tabName]="item.name"></app-rule-frame>
       </p-tabPanel>
     </p-tabView>
diff --git a/public/src/app/main/main.component.scss b/public/src/app/main/main.component.scss
index 402a56a..47f1bd9 100644
--- a/public/src/app/main/main.component.scss
+++ b/public/src/app/main/main.component.scss
@@ -1,7 +1,6 @@
-.container {
+.main-container {
   display: flex;
-  flex-direction: column;
-  // height: 100%;
+  flex-direction: column; // height: 100%;
   margin: 1em;
 }
 
@@ -16,11 +15,12 @@
 
 .ui-tabview .ui-tabview-nav li {
   margin: 0;
+  border-radius: 0;
 }
 
 .ui-tabview .ui-tabview-nav li.ui-tabview-selected {
   color: #009fdb;
-  border-top: 4px solid #009fdb;
+  border-top: 2px solid #009fdb;
   border-bottom: none;
 }
 
diff --git a/public/src/app/main/main.component.ts b/public/src/app/main/main.component.ts
index fdbb077..a3f2271 100644
--- a/public/src/app/main/main.component.ts
+++ b/public/src/app/main/main.component.ts
@@ -1,12 +1,11 @@
-import { Component, ViewEncapsulation, ViewChild } from '@angular/core';
-import { ActivatedRoute } from '@angular/router';
 import { Location } from '@angular/common';
-import { RestApiService } from '../api/rest-api.service';
-import { Store } from '../store/store';
-import { RuleFrameComponent } from '../rule-frame/rule-frame.component';
-import { GeneralComponent } from '../general/general.component';
+import { Component, ViewChild, ViewEncapsulation } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
 import { ToastrService } from 'ngx-toastr';
-import { forkJoin } from 'rxjs/observable/forkJoin';
+import { RestApiService } from '../api/rest-api.service';
+import { GeneralComponent } from '../general/general.component';
+import { RuleEngineApiService } from '../rule-engine/api/rule-engine-api.service';
+import { Store } from '../store/store';
 
 @Component({
   selector: 'app-main',
@@ -18,11 +17,13 @@
   cdump;
   nodes = [];
   @ViewChild(GeneralComponent) generalComponent: GeneralComponent;
-  // @ViewChildren(RuleFrameComponent) ruleFrameRef: QueryList<RuleFrameComponent>;
+  // @ViewChildren(RuleFrameComponent) ruleFrameRef:
+  // QueryList<RuleFrameComponent>;
 
   constructor(
     private route: ActivatedRoute,
     private restApi: RestApiService,
+    private _ruleApi: RuleEngineApiService,
     private toastr: ToastrService,
     public store: Store,
     private location: Location
@@ -39,6 +40,8 @@
   createMC(params) {
     console.log('newVfcmt: %o', params);
     this.store.loader = true;
+    this.store.vfiName = params.serviceAttached;
+    this.store.flowType = 'default';
     this.restApi
       .createNewVFCMT({
         name: params.name,
@@ -55,6 +58,7 @@
           this.store.mcUuid = success.vfcmt.uuid;
           console.log(this.cleanProperty(success));
           this.store.cdump = success.cdump;
+          this.diagramRelationsFromCdump(success);
           this.nodes = this.store.cdump.nodes;
           this.store.setTabsProperties(this.nodes);
           this.setDataFromMapToRuleEngine(success.cdump);
@@ -70,6 +74,17 @@
       );
   }
 
+  private diagramRelationsFromCdump(success: any) {
+    this.generalComponent.list = success.cdump.relations.map(item => {
+      return {
+        name1: item.name1,
+        name2: item.name2,
+        p1: item.meta.p1,
+        p2: item.meta.p2
+      };
+    });
+  }
+
   updateCdump(cdump) {
     this.store.cdump = cdump;
     this.nodes = this.store.cdump.nodes;
@@ -81,6 +96,8 @@
     console.log('importVfcmt: %o', params);
     this.generalComponent.importCompleted = true;
     this.store.loader = true;
+    this.store.vfiName = params.serviceAttached;
+    this.store.flowType = params.flowType;
     this.restApi
       .importVFCMT({
         name: params.name,
@@ -96,11 +113,13 @@
       .subscribe(
         success => {
           console.log(success);
+
           this.location.path();
           // this.location.go();
           this.store.mcUuid = success.vfcmt.uuid;
           console.log(this.cleanProperty(success));
           this.store.cdump = success.cdump;
+          this.diagramRelationsFromCdump(success);
           this.nodes = this.store.cdump.nodes;
           this.store.setTabsProperties(this.nodes);
           this.setDataFromMapToRuleEngine(success.cdump);
@@ -119,12 +138,9 @@
 
   setDataFromMapToRuleEngine(cdump) {
     this.store.tabParmasForRule = cdump.nodes
-      .filter(x => x.name.includes('map'))
+      .filter(x => x.name.toLowerCase().includes('map'))
       .map(y => {
-        return {
-          name: y.name,
-          nid: y.nid
-        };
+        return { name: y.name, nid: y.nid };
       });
   }
 
@@ -139,7 +155,6 @@
   }
 
   saveCDUMP() {
-    debugger;
     this.store.loader = true;
     this.restApi
       .saveMonitoringComponent({
@@ -167,7 +182,6 @@
   }
 
   saveAndCreateBlueprint() {
-    debugger;
     this.store.loader = true;
     if (this.store.cdumpIsDirty) {
       this.restApi
@@ -210,6 +224,7 @@
       .subscribe(
         success => {
           this.store.loader = false;
+
           this.toastr.success('', 'Save succeeded');
         },
         error => {
@@ -223,6 +238,7 @@
   }
 
   handleChange(e) {
+    this._ruleApi.callUpdateTabIndex(e.index - 1);
     this.store.setTabIndex(e.index - 1);
   }
 }
diff --git a/public/src/app/rule-engine/action-list/action-list.component.html b/public/src/app/rule-engine/action-list/action-list.component.html
index e7879b7..1ee74df 100644
--- a/public/src/app/rule-engine/action-list/action-list.component.html
+++ b/public/src/app/rule-engine/action-list/action-list.component.html
@@ -1,10 +1,10 @@
 <form #actionListFrm="ngForm" class="wrapper" data-tests-id="popupRuleEditor">
   <div class="header">
-    <div style="display: flex; justify-content: flex-end; align-items: center;">
+    <div style="display: flex; justify-content: flex-end; align-items: center;     margin-left: 20px;">
       <a (click)="closeDialog()" data-tests-id="btnBackRule" style="cursor: pointer;text-decoration: none; color: #009fdb;">
         <mat-icon fontSet="fontawesome" fontIcon="fa-angle-left" style="height: 22px; width: 22px; font-size: 22px; padding-right: 20px;"></mat-icon>
       </a>
-      <span style="font-size: 18px;">New Rule Editor</span>
+      <span style="font-size: 18px;">{{title}}</span>
     </div>
 
     <div style="display: flex; justify-content: flex-end; align-items: center; padding: 10px;">
@@ -17,7 +17,7 @@
           align-items: center;" [innerHTML]="'save' | feather:22"></span>
       </button>
 
-      <button mat-raised-button [disabled]="actions.length === 0" style="height: 35px;     margin-left: 20px;" color="primary" data-tests-id="btnDone"
+      <button mat-raised-button [disabled]="actions.length === 0" style="height: 35px;     margin-left: 10px;" color="primary" data-tests-id="btnDone"
         (click)="saveAndDone()">
         Done
       </button>
@@ -62,18 +62,24 @@
       <div style="display: flex;">
         <select [(ngModel)]="selectedAction" name="selectedAction" style="height: 2rem; width: 150px; margin-right: 1rem;" data-tests-id="selectAction">
           <option [ngValue]="null" disabled>Select Action</option>
+          
           <option value="copy">Copy</option>
           <option value="concat">Concat</option>
           <option value="map">Map</option>
           <option value="date formatter">Date Formatter</option>
+          <option value="log text">Log Text</option>
+          <option value="log event">Log Event</option>
+          <option value="replace text">Replace Text</option>
+          <option value="clear">Clear</option>
+
         </select>
 
         <div style="display: flex; align-items: center;">
-          <button mat-mini-fab color="primary" style="height: 24px; width: 24px; display:flex; justify-content: center;" (click)="addAction2list(selectedAction)"
+          <button mat-mini-fab color="primary" style="height: 16px; width: 16px; display:flex; justify-content: center;" (click)="addAction2list(selectedAction)"
             data-tests-id="btnAddAction">
-            <span style="display: flex; justify-content: center; align-items: center" [innerHTML]="'plus' | feather:16"></span>
+            <span style="display: flex; justify-content: center; align-items: center" [innerHTML]="'plus' | feather:12"></span>
           </button>
-          <span style="color: #009FDB; display: flex; justify-content: center; padding-left: 10px">Add Action</span>
+          <span style="color: #009FDB; display: flex; justify-content: center; padding-left: 6px">Add Action</span>
         </div>
 
       </div>
diff --git a/public/src/app/rule-engine/action-list/action-list.component.scss b/public/src/app/rule-engine/action-list/action-list.component.scss
index 39b9dce..67fa048 100644
--- a/public/src/app/rule-engine/action-list/action-list.component.scss
+++ b/public/src/app/rule-engine/action-list/action-list.component.scss
@@ -9,7 +9,9 @@
     justify-content: space-between;
     align-items: center;
     color: #191919;
-    border-bottom: 2px solid #d2d2d2;
+    border-bottom: 1px solid #d2d2d2;
+    padding-bottom: 0px;
+    margin: 0;
     // padding: 0.4rem 1rem;
   }
 
diff --git a/public/src/app/rule-engine/action-list/action-list.component.ts b/public/src/app/rule-engine/action-list/action-list.component.ts
index 40ff46d..27a74d4 100644
--- a/public/src/app/rule-engine/action-list/action-list.component.ts
+++ b/public/src/app/rule-engine/action-list/action-list.component.ts
@@ -1,20 +1,16 @@
 import {
-  Component,
-  Inject,
-  ViewChildren,
-  QueryList,
   AfterViewInit,
+  Component,
+  QueryList,
   ViewChild,
-  Input
+  ViewChildren
 } from '@angular/core';
-import { RuleEngineApiService } from '../api/rule-engine-api.service';
-import { Subject } from 'rxjs/Subject';
-import { v1 as uuid } from 'uuid';
-import { environment } from '../../../environments/environment';
-import { ActionComponent } from '../action/action.component';
-import { cloneDeep } from 'lodash';
-import { Store } from '../../store/store';
 import { NgForm } from '@angular/forms';
+import { cloneDeep } from 'lodash';
+import { v1 as uuid } from 'uuid';
+import { Store } from '../../store/store';
+import { ActionComponent } from '../action/action.component';
+import { RuleEngineApiService } from '../api/rule-engine-api.service';
 
 @Component({
   selector: 'app-action-list',
@@ -22,6 +18,7 @@
   styleUrls: ['./action-list.component.scss']
 })
 export class ActionListComponent implements AfterViewInit {
+  title = '';
   error: Array<string>;
   condition: any;
   eventType: string;
@@ -53,8 +50,10 @@
         this.condition = data.item.condition;
         this.uid = data.item.uid;
         this.description = data.item.description;
+        this.title = this.description + ' - Rule Editor';
         this.ifStatement = this.condition == null ? false : true;
       } else {
+        this.title = 'New Rule Editor';
         this.actions = new Array();
         this.backupActionForCancel = new Array();
         this.condition = null;
@@ -97,12 +96,24 @@
           value: '',
           regex: '',
           state: 'closed',
-          values: [{ value: '' }, { value: '' }]
+          values: [
+            {
+              value: ''
+            },
+            {
+              value: ''
+            }
+          ]
         },
         actionType: this.selectedAction,
         target: '',
         map: {
-          values: [{ key: '', value: '' }],
+          values: [
+            {
+              key: '',
+              value: ''
+            }
+          ],
           haveDefault: false,
           default: ''
         },
@@ -111,6 +122,18 @@
           toFormat: '',
           fromTimezone: '',
           toTimezone: ''
+        },
+        replaceText: {
+          find: '',
+          replace: ''
+        },
+        logText: {
+          name: '',
+          level: '',
+          text: ''
+        },
+        logEvent: {
+          title: ''
         }
       });
     }
@@ -162,7 +185,10 @@
               ? item.target
               : item.selectedNode.id,
         map: item.map,
-        dateFormatter: item.dateFormatter
+        dateFormatter: item.dateFormatter,
+        replaceText: item.replaceText,
+        logText: item.logText,
+        logEvent: item.logEvent
       };
     });
     let conditionData2server = null;
@@ -178,6 +204,7 @@
     return {
       version: this.version,
       eventType: this.eventType,
+      notifyId: this.store.notifyIdValue,
       uid: this.uid,
       description: this.description,
       actions: actionSetData,
@@ -225,12 +252,12 @@
     const actionComp = this.actionsRef.toArray();
     const filterInvalidActions = actionComp.filter(comp => {
       return (
-        comp.fromInstance.fromFrm.invalid ||
-        comp.targetInstance.targetFrm.invalid ||
-        comp.actionFrm.invalid
+        // (comp.fromInstance && comp.fromInstance.fromFrm.invalid) ||
+        // (comp.targetInstance && comp.targetInstance.targetFrm.invalid) ||
+        comp.actionFrm && comp.actionFrm.invalid
       );
     });
-    if (this.actionListFrm.valid && filterInvalidActions.length === 0) {
+    if (this.actionListFrm.valid && filterInvalidActions.length == 0) {
       const data = this.prepareDataToSaveRule();
       this.store.loader = true;
       this._ruleApi.modifyRule(data).subscribe(
@@ -249,11 +276,10 @@
         }
       );
     } else {
-      // scroll to first invalid element
-      const elId = filterInvalidActions[0].action.id;
-      const el = document.getElementById(elId as string);
-      const label = el.children.item(0) as HTMLElement;
-      el.scrollIntoView();
+      // scroll to first invalid element const elId =
+      // filterInvalidActions[0].action.id; const el = document.getElementById(elId as
+      // string); const label = el.children.item(0) as HTMLElement;
+      // el.scrollIntoView();
     }
   }
 
diff --git a/public/src/app/rule-engine/action/action.component.html b/public/src/app/rule-engine/action/action.component.html
index b41ab82..250af34 100644
--- a/public/src/app/rule-engine/action/action.component.html
+++ b/public/src/app/rule-engine/action/action.component.html
@@ -1,56 +1,151 @@
 <form #actionFrm="ngForm" class="conatiner" id="{{action.id}}" (mouseover)="changeStyle($event)" (mouseout)="changeStyle($event)">
   <div>
+
     <div class="center-content">
       <!-- type info -->
       <div class="action-info" [ngClass]="highlight">
         {{action.actionType | uppercase}}
       </div>
+
       <!-- from component -->
-      <app-from #from style="width: 100%" [actionType]="action.actionType" (onFromChange)="updateFrom($event)"></app-from>
+      <app-from [hidden]="action.actionType === 'log event' || action.actionType === 'log text'" class="center-content-item" #from
+        [actionType]="action.actionType" (onFromChange)="updateFrom($event)"></app-from>
+
       <!-- target component -->
-      <app-target #target style="width: 100%" (onTargetChange)="updateTarget($event)" [nodes]="action.nodes">
+      <app-target [hidden]="action.actionType === 'clear' || action.actionType === 'replace text' || action.actionType === 'log text' || action.actionType === 'log event'"
+        #target style="width: 100%" (onTargetChange)="updateTarget($event)" [nodes]="action.nodes">
       </app-target>
+
+      <!-- log Event -->
+      <div *ngIf="action.actionType === 'log event'" class="center-content-item">
+        <div class="from">
+          <div class="from-container">
+            <div style="display: flex; align-items: center; width: 100%;" class="label">
+              <span class="label" style="padding: 0 5px; width: 100px;">Title</span>
+              <input required class="input-text" data-tests-id="InputLogTitle" ngModel name="title" [(ngModel)]="action.logEvent.title"
+                type="text" placeholder="The title for the log entry">
+            </div>
+          </div>
+        </div>
+      </div>
+
+      <!-- log Text -->
+      <div *ngIf="action.actionType === 'log text'" class="center-content-item">
+        <div class="from">
+          <div class="from-container">
+            <div style="display: flex; align-items: center; width: 100%;" class="label">
+              <span class="label" style="padding: 0 5px; width: 100px;">Log Text</span>
+              <input required class="input-text" data-tests-id="InputLogText" ngModel name="logText" [(ngModel)]="action.logText.text"
+                type="text" placeholder="The title for the log entry">
+            </div>
+          </div>
+        </div>
+      </div>
+
     </div>
 
-    <!-- dateFormatter -->
-    <div *ngIf="action.actionType === 'date formatter'" style="display: flex; flex-direction: column; margin: 1em; align-items: flex-end;">
-      <div style="display: flex; margin: 0.5em 0;">
-        <div class="from">
-          <div class="from-conatiner">
-            <div style="display: flex; align-items: center;" class="label">
-              <span class="label" style="padding: 0 5px; width: 100px;">From Format</span>
-              <input class="input-text" ngModel required name="fromFormat" [(ngModel)]="action.dateFormatter.fromFormat" type="text">
+      <!-- dateFormatter -->
+      <div *ngIf="action.actionType === 'date formatter'" style="flex-direction: column; margin-left: 156px; align-items: flex-end;">
+          <div style="display: flex; margin: 0.5em 0; padding-left: 6px;">
+            <div class="from" style="width:50%;">
+              <div class="from-container">
+                <div style="display: flex; align-items: center; width: 100%;" class="label">
+                  <span class="label" style="padding: 0 5px; width: 100px;">From Format</span>
+                  <input data-tests-id="InputFromFormat" class="input-text" ngModel required name="fromFormat" [(ngModel)]="action.dateFormatter.fromFormat" type="text">
+                </div>
+              </div>
+            </div>
+            <div class="from"  style="width:50%; padding: 0;">
+              <div class="from-container">
+                <div style="display: flex; align-items: center; width: 100%;" class="label">
+                  <span class="label" style="padding: 0 5px; width: 100px;">To Format</span>
+                  <input data-tests-id="InputToFormat" class="input-text" ngModel required name="toFormat" [(ngModel)]="action.dateFormatter.toFormat" type="text">
+                </div>
+              </div>
+            </div>
+          </div>
+    
+          <div style="display: flex; margin: 0.5em 0; padding-left: 6px;">
+            <div class="from" style="width:50%;">
+              <div class="from-container">
+                <div style="display: flex; align-items: center; width: 100%;" class="label">
+                  <span class="label" style="padding: 0 5px; width: 132px;">From Time-zone</span>
+                  <input class="input-text" data-tests-id="InputFromTimezone" ngModel required name="fromTimezone" [(ngModel)]="action.dateFormatter.fromTimezone" type="text">
+                </div>
+              </div>
+            </div>
+            <div class="from" style="width:50%; padding: 0;">
+              <div class="from-container">
+                <div style="display: flex; align-items: center; width: 100%;" class="label">
+                  <span class="label" style="padding: 0 5px; width: 100px;">To Time-zone</span>
+                  <input class="input-text" data-tests-id="InputToTimezone" ngModel required name="toTimezone" [(ngModel)]="action.dateFormatter.toTimezone" type="text">
+                </div>
+              </div>
             </div>
           </div>
         </div>
-        <div class="from">
-          <div class="from-conatiner">
-            <div style="display: flex; align-items: center;" class="label">
-              <span class="label" style="padding: 0 5px; width: 100px;">To Format</span>
-              <input class="input-text" ngModel required name="toFormat" [(ngModel)]="action.dateFormatter.toFormat" type="text">
+
+    <!-- replace text -->
+    <div *ngIf="action.actionType === 'replace text'" class="action-container" style="flex-direction: row; margin-left: 152px; padding: 0 0.8em;">
+
+      <div class="action-item">
+        <div class="from" style="width:100%;">
+          <div class="from-container" display="padding:0;">
+
+            <div class="label" style="width: 100%;">
+              <span class="label" style="padding: 0 5px; width: 100px;">Find what</span>
+              <input data-tests-id="InputFindWhat" class="input-text" ngModel required name="findWhat" [(ngModel)]="action.replaceText.find"
+                type="text" placeholder="Find text">
+            </div>
+
+          </div>
+        </div>
+
+      </div>
+
+      <div class="action-item">
+        <div class="from" style="width: 100%; padding: 0;">
+          <div class="from-container">
+
+            <div class="label" style="width: 100%;">
+              <span class="label" style="padding: 0 5px; width: 100px;">Replace with</span>
+              <input data-tests-id="InputReplaceWith" class="input-text" ngModel required name="replaceWith" [(ngModel)]="action.replaceText.replace"
+                type="text" placeholder="Replace with text">
+            </div>
+
+          </div>
+        </div>
+
+      </div>
+    </div>
+
+    <!-- log text -->
+    <div *ngIf="action.actionType === 'log text'" class="action-container" style="flex-direction: row; margin-left: 152px; padding: 0 0.8em;">
+
+      <div class="action-item">
+        <div class="from" style="width: 100%;">
+          <div class="from-container" display="padding:0;">
+            <div class="label" style="width: 100%;">
+              <span class="label" style="padding: 0 5px; width: 100px;">Log Name</span>
+              <input class="input-text" data-tests-id="InputLogName" ngModel name="logName" [(ngModel)]="action.logText.name"
+                type="text" placeholder="Enter log name">
             </div>
           </div>
         </div>
       </div>
 
-      <div style="display: flex; margin: 0.5em 0;">
-        <div class="from">
-          <div class="from-conatiner">
-            <div style="display: flex; align-items: center;" class="label">
-              <span class="label" style="padding: 0 5px; width: 100px;">From Time-zone</span>
-              <input class="input-text" ngModel required name="fromTimezone" [(ngModel)]="action.dateFormatter.fromTimezone" type="text">
-            </div>
-          </div>
-        </div>
-        <div class="from">
-          <div class="from-conatiner">
-            <div style="display: flex; align-items: center;" class="label">
-              <span class="label" style="padding: 0 5px; width: 100px;">To Time-zone</span>
-              <input class="input-text" ngModel required name="toTimezone" [(ngModel)]="action.dateFormatter.toTimezone" type="text">
+      <div class="action-item">
+        <div class="from" style="width: 100%; padding: 0;">
+          <div class="from-container">
+            <div class="label" style="width: 100%;">
+              <span class="label" style="padding: 0 5px; width: 100px;">Log Level</span>
+              <input class="input-text" data-tests-id="InputLogLevel" ngModel required name="logLevel" [(ngModel)]="action.logText.level"
+                type="text" placeholder="Text to log">
             </div>
           </div>
         </div>
       </div>
+
     </div>
 
     <!-- Map -->
@@ -90,8 +185,8 @@
               <input [(ngModel)]="item.value" ngModel required name="mapValue[{{index}}]" data-tests-id="value" type="text" style="width:97%; height: 100%;border: none; padding:0 5px;">
             </th>
             <th style="height: 30px; display: flex; align-items: baseline;">
-              <button mat-icon-button [ngStyle]="hoveredIndex === index ? {'opacity':'1'} : {'opacity':'0'}" class="button-remove" (click)="removeMapRow(index)"
-                *ngIf="action.map.values.length > 1" style="height: 24px; width: 24px; display:flex; box-shadow: none;">
+              <button mat-icon-button data-tests-id="btn-remove-row" [ngStyle]="hoveredIndex === index ? {'opacity':'1'} : {'opacity':'0'}"
+                class="button-remove" (click)="removeMapRow(index)" *ngIf="action.map.values.length > 1" style="height: 24px; width: 24px; display:flex; box-shadow: none;">
                 <mat-icon class="md-24">delete</mat-icon>
               </button>
             </th>
@@ -102,8 +197,9 @@
 
       <div style="display:flex; justify-content: space-between;">
         <div style="display: flex; align-items: center;">
-          <button mat-mini-fab color="primary" (click)="addMapRow()" style="height: 24px; width: 24px; display:flex; box-shadow: none;">
-            <mat-icon>add</mat-icon>
+          <button mat-mini-fab color="primary" (click)="addMapRow()" data-tests-id="btn-add-row" style="height: 16px; width: 16px; display:flex; box-shadow: none;">
+            <span style="padding-left: 2px; display: flex; justify-content: center; align-items: center" [innerHTML]="'plus' | feather:12"></span>
+            <!-- <mat-icon>add</mat-icon> -->
           </button>
           <span style="color: #009FDB; display: flex; justify-content: center; padding-left: 6px">Add Row</span>
         </div>
diff --git a/public/src/app/rule-engine/action/action.component.scss b/public/src/app/rule-engine/action/action.component.scss
index f903db4..fc36380 100644
--- a/public/src/app/rule-engine/action/action.component.scss
+++ b/public/src/app/rule-engine/action/action.component.scss
@@ -4,7 +4,7 @@
   width: 100%;
   height: 100%;
   justify-content: space-between;
-  margin: 10px 0;
+  margin-top: 10px;
   .black {
     color: black;
   }
@@ -25,9 +25,12 @@
       justify-content: center;
       min-width: 142px;
     }
+    .center-content-item {
+      width: 100%;
+    }
   }
   .map-container {
-    padding-left: 115px;
+    padding-left: 172px;
     .default {
       display: flex;
       width: 100%;
@@ -82,7 +85,7 @@
   display: flex;
   flex-direction: column;
   padding: 0 10px;
-  .from-conatiner {
+  .from-container {
     display: flex;
     flex-direction: column;
     align-items: flex-start;
@@ -114,3 +117,17 @@
     color: #009fdb;
   }
 }
+
+.action-container {
+  display: flex;
+  flex-direction: column;
+  align-items: flex-end;
+}
+.action-item {
+  width: 100%;
+  margin-top: 0.5em;
+}
+.label .action-item-label {
+  padding: 0 5px;
+  width: 110px;
+}
diff --git a/public/src/app/rule-engine/action/action.component.ts b/public/src/app/rule-engine/action/action.component.ts
index 9c7023f..1a62e1a 100644
--- a/public/src/app/rule-engine/action/action.component.ts
+++ b/public/src/app/rule-engine/action/action.component.ts
@@ -27,9 +27,12 @@
     if (this.action.from !== '') {
       console.log('Action %o', this.action);
       this.fromInstance.updateMode(this.action.from);
+    }
+    if (this.action.target !== '') {
       this.targetInstance.updateMode(this.action);
     }
   }
+
   updateFrom(data) {
     this.action.from = data;
   }
diff --git a/public/src/app/rule-engine/api/rule-engine-api.service.spec.ts b/public/src/app/rule-engine/api/rule-engine-api.service.spec.ts
deleted file mode 100644
index e15535b..0000000
--- a/public/src/app/rule-engine/api/rule-engine-api.service.spec.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { TestBed, inject } from '@angular/core/testing';
-import { HttpModule } from '@angular/http';
-import { RuleEngineApiService } from './rule-engine-api.service';
-
-describe('RuleEngineApiService', () => {
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      imports: [HttpModule],
-      providers: [RuleEngineApiService]
-    });
-  });
-
-  it(
-    'should be created',
-    inject([RuleEngineApiService], (service: RuleEngineApiService) => {
-      expect(service).toBeTruthy();
-    })
-  );
-});
diff --git a/public/src/app/rule-engine/api/rule-engine-api.service.ts b/public/src/app/rule-engine/api/rule-engine-api.service.ts
index 0d7ab5e..7bf5e18 100644
--- a/public/src/app/rule-engine/api/rule-engine-api.service.ts
+++ b/public/src/app/rule-engine/api/rule-engine-api.service.ts
@@ -1,17 +1,17 @@
-import { Injectable, EventEmitter } from '@angular/core';
+import { Injectable } from '@angular/core';
 import {
-  Http,
-  Response,
   Headers,
+  Http,
   RequestOptions,
+  Response,
   URLSearchParams
 } from '@angular/http';
-import { Observable, Subject } from 'rxjs/Rx';
+import 'rxjs/add/operator/catch';
 // Import RxJs required methods
 import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/catch';
-import { environment } from '../../../environments/environment';
+import { Observable, Subject } from 'rxjs/Rx';
 import { v4 as uuid } from 'uuid';
+import { environment } from '../../../environments/environment';
 
 @Injectable()
 export class RuleEngineApiService {
@@ -25,6 +25,7 @@
   flowType: string;
   editorData: Subject<any> = new Subject();
   updateVersionLock: Subject<any> = new Subject();
+  tabIndex: Subject<any> = new Subject();
 
   constructor(private http: Http) {
     this.baseUrl = `${environment.apiBaseUrl}/rule-editor`;
@@ -108,16 +109,35 @@
       });
   }
 
-  translate() {
-    const url = `${this.baseUrl}/rule/translate/${this.vfcmtUuid}/${
-      this.dcaeCompName
-    }/${this.nid}/${this.configParam}`;
+  translate(nofityId) {
+    const url = `${this.baseUrl}/rule/translate`;
+    const params = {
+      vfcmtUuid: this.vfcmtUuid,
+      dcaeCompLabel: this.dcaeCompName,
+      nid: this.nid,
+      configParam: this.configParam,
+      flowType: this.flowType,
+      notifyId: nofityId
+    };
+    this.options.headers.set('X-ECOMP-RequestID', uuid());
+    // const params = new URLSearchParams(); params.append('flowType',
+    // this.flowType); const options = {   ...this.options,   params: params };
+    return this.http
+      .post(url, params, this.options)
+      .map(response => response.json())
+      .catch((error: any) => {
+        return Observable.throw(error.json().requestError || 'Server error');
+      });
+  }
+
+  generateMappingRulesFileName(dcaeCompLabel, nid, vfcmtUuid) {
+    const url = `${
+      this.baseUrl
+    }/getExistingRuleTargets/${vfcmtUuid}/${dcaeCompLabel}/${nid}`;
     this.options.headers.set('X-ECOMP-RequestID', uuid());
     const params = new URLSearchParams();
-    params.append('flowType', this.flowType);
-    const options = { ...this.options, params: params };
     return this.http
-      .get(url, options)
+      .get(url, this.options)
       .map(response => response.json())
       .catch((error: any) => {
         return Observable.throw(error.json().requestError || 'Server error');
@@ -131,4 +151,8 @@
   callUpdateVersionLock() {
     this.updateVersionLock.next();
   }
+
+  callUpdateTabIndex(index) {
+    this.tabIndex.next(index);
+  }
 }
diff --git a/public/src/app/rule-engine/condition/condition.component.html b/public/src/app/rule-engine/condition/condition.component.html
index a441f55..0ff244b 100644
--- a/public/src/app/rule-engine/condition/condition.component.html
+++ b/public/src/app/rule-engine/condition/condition.component.html
@@ -18,7 +18,7 @@
           <div style="display: flex; margin-left: auto;">
 
             <div style="display: flex; align-items: center; padding: 0 25px;">
-              <button mat-mini-fab color="primary" (click)="addConditional(tree, node)" style="height: 24px; width: 24px; display:flex; box-shadow: none;">
+              <button mat-mini-fab color="primary" data-tests-id="addCondition" (click)="addConditional(tree, node)" style="height: 24px; width: 24px; display:flex; box-shadow: none;">
                 <mat-icon class="material-icons md-18">add</mat-icon>
               </button>
               <span class="btn-label">Add Condition
@@ -36,7 +36,7 @@
             </div>
 
             <div style="display: flex; align-items: center; padding: 0 5px; background: #FFFFFF;">
-              <button mat-icon-button (click)="removeConditional(tree, node)" class="button-remove">
+              <button data-tests-id="removeConditionNode" mat-icon-button (click)="removeConditional(tree, node)" class="button-remove">
                 <mat-icon class="md-24">delete</mat-icon>
               </button>
             </div>
@@ -77,7 +77,7 @@
           </div>
           <!-- remove button -->
           <div class="show-delete">
-            <button mat-icon-button (click)="removeConditional(tree, node)" class="button-remove">
+            <button mat-icon-button data-tests-id="RemoveCondition" (click)="removeConditional(tree, node)" class="button-remove">
               <mat-icon class="md-24">delete</mat-icon>
             </button>
           </div>
diff --git a/public/src/app/rule-engine/condition/condition.component.spec.ts b/public/src/app/rule-engine/condition/condition.component.spec.ts
deleted file mode 100644
index bb0d38a..0000000
--- a/public/src/app/rule-engine/condition/condition.component.spec.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-import { By } from '@angular/platform-browser';
-import { DebugElement } from '@angular/core';
-import { FormsModule } from '@angular/forms';
-import { HttpModule } from '@angular/http';
-import {
-  MatDialogModule,
-  MatButtonModule,
-  MatIconModule,
-  MatDialogRef,
-  MAT_DIALOG_DATA
-} from '@angular/material';
-
-import { ConditionComponent } from './condition.component';
-
-describe('Condition Component', () => {
-  let component: ConditionComponent;
-  let fixture: ComponentFixture<ConditionComponent>;
-  let de: DebugElement;
-  let el: HTMLElement;
-
-  beforeEach(
-    async(() => {
-      TestBed.configureTestingModule({
-        imports: [
-          FormsModule,
-          HttpModule,
-          MatDialogModule,
-          MatButtonModule,
-          MatIconModule
-        ],
-        providers: [],
-        schemas: [CUSTOM_ELEMENTS_SCHEMA],
-        declarations: [ConditionComponent]
-      }).compileComponents();
-    })
-  );
-
-  beforeEach(() => {
-    // create component and test fixture
-    fixture = TestBed.createComponent(ConditionComponent);
-    // get test component from the fixture
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should be created', () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/public/src/app/rule-engine/confirm-popup/confirm-popup.component.html b/public/src/app/rule-engine/confirm-popup/confirm-popup.component.html
index 49c800a..837e0f8 100644
--- a/public/src/app/rule-engine/confirm-popup/confirm-popup.component.html
+++ b/public/src/app/rule-engine/confirm-popup/confirm-popup.component.html
@@ -1,12 +1,36 @@
-<div class="container" data-tests-id="delete-popup">
+<div class="container-popup" data-tests-id="delete-popup">
   <div class="header">
-    Delete
+    <div style="display: flex; width:100%;">
+      <span style="color: #CF2A2A;
+        padding-right: 15px;
+        height: 100%;
+        display: flex;
+        justify-content: center;
+        align-items: center;" [innerHTML]="'x-circle' | feather:28"></span>
+      <span style="font-family: 'Open Sans', sans-serif;
+      font-size: 24px; width: 100%;">
+        Delete
+      </span>
+      <span style="
+        height: 100%;
+        display: flex;
+        color:rgb(90, 90, 90);
+        justify-content: center;
+        align-items: center;" [innerHTML]="'x' | feather:20" (click)="close(false)"></span>
+    </div>
   </div>
-  <div class="content">
+  <div class="content" style="padding: 0 0 20px 50px; font-family: 'Open Sans', sans-serif; font-size: 14px;">
     Are you sure you want to delete?
   </div>
   <div class="buttons">
-    <button mat-raised-button (click)="close(true)" data-tests-id="btnDelete" style="margin-right: 1rem;" color="primary">Delete</button>
-    <button mat-raised-button (click)="close(false)" data-tests-id="btnCancel" style="border: 1px solid #009FDB; color: #009FDB; background: #ffffff;">Cancel</button>
+
+    <button mat-raised-button color="primary" style="background-color: #CF2A2A; margin-right: 10px; font-size: 14px; font-family: 'Open Sans', sans-serif; height: 36px; color:white;"
+      (click)="close(true)" data-tests-id="btnDelete">
+      DELETE
+    </button>
+    <button mat-raised-button class="btn-secondry" style="border-color: #CF2A2A !important; color:#CF2A2A !important; font-size: 14px; font-family: 'Open Sans', sans-serif;text-align: center; height: 36px;"
+      (click)="close(false)" data-tests-id="btnCancel">
+      CANCEL
+    </button>
   </div>
 </div>
diff --git a/public/src/app/rule-engine/confirm-popup/confirm-popup.component.scss b/public/src/app/rule-engine/confirm-popup/confirm-popup.component.scss
index 2a826ff..4e3539d 100644
--- a/public/src/app/rule-engine/confirm-popup/confirm-popup.component.scss
+++ b/public/src/app/rule-engine/confirm-popup/confirm-popup.component.scss
@@ -1,10 +1,19 @@
-.container {
+.my-confrim-dialog .mat-dialog-container {
+  height: 180px;
+}
+
+.container-popup {
   display: flex;
   justify-content: space-between;
+  flex-direction: column;
   margin: 0 !important;
-  border-top: solid 6px #ffb81c;
+  border-top: solid 6px #cf2a2a;
   .header {
     border-bottom: none;
+    padding-top: 15px;
+    padding-left: 20px;
+    padding-right: 12px;
+    padding-bottom: 0;
   }
   .content {
     margin: 1rem;
diff --git a/public/src/app/rule-engine/confirm-popup/confirm-popup.component.ts b/public/src/app/rule-engine/confirm-popup/confirm-popup.component.ts
index 23b6cee..d65cc5b 100644
--- a/public/src/app/rule-engine/confirm-popup/confirm-popup.component.ts
+++ b/public/src/app/rule-engine/confirm-popup/confirm-popup.component.ts
@@ -1,10 +1,11 @@
-import { Component, Inject } from '@angular/core';
+import { Component, Inject, ViewEncapsulation } from '@angular/core';
 import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
 
 @Component({
   selector: 'app-confirm-popup',
   templateUrl: './confirm-popup.component.html',
-  styleUrls: ['./confirm-popup.component.scss']
+  styleUrls: ['./confirm-popup.component.scss'],
+  encapsulation: ViewEncapsulation.None
 })
 export class ConfirmPopupComponent {
   constructor(
diff --git a/public/src/app/rule-engine/from/from.component.html b/public/src/app/rule-engine/from/from.component.html
index 7af653d..df2c110 100644
--- a/public/src/app/rule-engine/from/from.component.html
+++ b/public/src/app/rule-engine/from/from.component.html
@@ -1,6 +1,6 @@
 <form #fromFrm="ngForm" novalidate>
   <!-- Copy template -->
-  <div class="from" *ngIf="actionType === 'copy'" data-tests-id="fromComponent">
+  <div class="from" *ngIf="actionType === 'copy' || actionType === 'replace text' || actionType === 'log text'" data-tests-id="fromComponent">
     <div class="from-conatiner">
       <div style="display: flex; align-items: center; width: 100%;" class="label">
         <span class="label" style="padding: 0 5px; width: 50px;">From</span>
@@ -38,6 +38,39 @@
     </div>
   </div>
 
+  <!-- clear template -->
+  <div class="from" *ngIf="actionType === 'clear'" ngModelGroup="clear" #clearFrom="ngModelGroup">
+    <div *ngFor="let input of from.values; let index = index;" data-tests-id="clearInputArrayFrom" (mouseleave)="hoveredIndex=-1"
+      (mouseover)="hoveredIndex=index" class="from-conatiner" style="margin-bottom:1rem; display: flex; flex-direction: column; align-items: flex-start;"
+      data-tests-id="fromComponent">
+      <div style="display: flex; align-items: center; width: 100%;">
+        <div style="display: flex; align-items: center; width: 100%;" class="label">
+          <span class="label" style="padding: 0 5px; width: 50px;">From</span>
+          <input class="input-text" (ngModelChange)="modelChange(from)" [(ngModel)]="input.value" type="text" data-tests-id="valueInput"
+            ngModel required name="clear[{{index}}]">
+        </div>
+
+        <button mat-icon-button class="button-remove" [ngStyle]="hoveredIndex === index ? {'opacity':'1'} : {'opacity':'0'}" (click)="removeFromInput(index)"
+          *ngIf="from.values.length > 1" style="box-shadow: none; height: 24px; width: 24px; display:flex" data-tests-id="btnDelete">
+          <mat-icon class="md-24">delete</mat-icon>
+        </button>
+      </div>
+
+    </div>
+    <div style="display:flex; justify-content: space-between;">
+      <div style="display: flex; align-items: center;">
+        <button mat-mini-fab color="primary" (click)="addFromInput()" style="box-shadow: none; height: 16px; width: 16px; display:flex"
+          data-tests-id="btnAddInput">
+          <span style="padding-left: 2px; display: flex; justify-content: center; align-items: center" [innerHTML]="'plus' | feather:12"></span>
+<!-- 
+          <mat-icon>add</mat-icon> -->
+        </button>
+        <span style="color: #009FDB; display: flex; justify-content: center; padding-left: 6px">Add input</span>
+      </div>
+    </div>
+  </div>
+
+
   <!-- Concat template -->
   <div class="from" *ngIf="actionType === 'concat'" ngModelGroup="concat" #concatFrom="ngModelGroup">
     <div *ngFor="let input of from.values; let index = index;" data-tests-id="concatInputArrayFrom" (mouseleave)="hoveredIndex=-1"
@@ -59,11 +92,12 @@
     </div>
     <div style="display:flex; justify-content: space-between;">
       <div style="display: flex; align-items: center;">
-        <button mat-mini-fab color="primary" (click)="addFromInput()" style="box-shadow: none; height: 24px; width: 24px; display:flex"
+        <button mat-mini-fab color="primary" (click)="addFromInput()" style="box-shadow: none; height: 16px; width: 16px; display:flex"
           data-tests-id="btnAddInput">
-          <mat-icon>add</mat-icon>
+          <span style="padding-left: 2px; display: flex; justify-content: center; align-items: center" [innerHTML]="'plus' | feather:12"></span>
+          <!-- <mat-icon>add</mat-icon> -->
         </button>
-        <span style="color: #009FDB; display: flex; justify-content: center; padding-left: 6px">Add input</span>
+        <span style="color: #009FDB; display: flex; justify-content: center; padding-top: 1px; padding-left: 6px;">Add input</span>
       </div>
     </div>
   </div>
diff --git a/public/src/app/rule-engine/from/from.component.ts b/public/src/app/rule-engine/from/from.component.ts
index e7c276b..bc1dedb 100644
--- a/public/src/app/rule-engine/from/from.component.ts
+++ b/public/src/app/rule-engine/from/from.component.ts
@@ -64,6 +64,12 @@
   hoveredIndex;
   // public keyUp = new BehaviorSubject<string>(null);
 
+  ngOnInit(): void {
+    if (this.actionType === 'clear') {
+      this.from.values = [{ value: '' }];
+    }
+  }
+
   showRegex(item) {
     item.state = item.state === 'closed' ? 'open' : 'closed';
     if (item.state === 'closed') {
diff --git a/public/src/app/rule-engine/host/exit-mode.enum.ts b/public/src/app/rule-engine/host/exit-mode.enum.ts
deleted file mode 100644
index 784ba3b..0000000
--- a/public/src/app/rule-engine/host/exit-mode.enum.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export enum ExitMode {
-  Done,
-  Cancel
-}
diff --git a/public/src/app/rule-engine/host/host-params.ts b/public/src/app/rule-engine/host/host-params.ts
deleted file mode 100644
index f204101..0000000
--- a/public/src/app/rule-engine/host/host-params.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export interface HostParams {
-  readonly vfcmtUuid: string;
-  readonly nodeName: string;
-  readonly nodeId: string;
-  readonly fieldName: string;
-  readonly userId: string;
-  readonly flowType: string;
-}
diff --git a/public/src/app/rule-engine/host/host.service.spec.ts b/public/src/app/rule-engine/host/host.service.spec.ts
deleted file mode 100644
index 048be80..0000000
--- a/public/src/app/rule-engine/host/host.service.spec.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { TestBed, inject } from '@angular/core/testing';
-
-import { HostService } from './host.service';
-
-describe('HostService', () => {
-  beforeEach(() => {
-    TestBed.configureTestingModule({
-      providers: [HostService]
-    });
-  });
-
-  it(
-    'should be created',
-    inject([HostService], (service: HostService) => {
-      expect(service).toBeTruthy();
-    })
-  );
-});
diff --git a/public/src/app/rule-engine/host/host.service.ts b/public/src/app/rule-engine/host/host.service.ts
deleted file mode 100644
index 7918d30..0000000
--- a/public/src/app/rule-engine/host/host.service.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import { Injectable } from '@angular/core';
-import { HostParams } from './host-params';
-import { ExitMode } from './exit-mode.enum';
-
-@Injectable()
-export class HostService {
-  /* Public Members */
-
-  public static getParams(): HostParams {
-    return this.getQueryParamsObj(window.location.search) as HostParams;
-  }
-
-  public static enterModifyRule(): void {
-    this.postMessage('modifyRule', null);
-  }
-
-  public static exitModifyRule(): void {
-    this.postMessage('ruleList', null);
-  }
-
-  public static disableLoader(): void {
-    this.postMessage('disable-loader', null);
-  }
-
-  public static exit(mode: ExitMode, data: string): void {
-    if (mode === ExitMode.Cancel) {
-      this.postMessage('exit', null);
-    } else if (mode === ExitMode.Done) {
-      this.postMessage('exit', data);
-    }
-  }
-
-  /* Private Methods */
-
-  private static postMessage(eventName: string, data: string): void {
-    window.parent.postMessage(
-      {
-        type: eventName,
-        data: data
-      },
-      '*'
-    );
-  }
-
-  private static getQueryParamsObj(query: string): object {
-    return query
-      .substring(1) // removes '?' that always appears as prefix to the query-string
-      .split('&') // splits query-string to "key=value" strings
-      .map(p => p.split('=')) // splits each "key=value" string to [key,value] array
-      .reduce((res, p) => {
-        // converts to a dictionary (object) of params
-        res[p[0]] = p[1];
-        return res;
-      }, {});
-  }
-}
diff --git a/public/src/app/rule-engine/rule-list/rule-list.component.html b/public/src/app/rule-engine/rule-list/rule-list.component.html
index c68c706..4ce6efb 100644
--- a/public/src/app/rule-engine/rule-list/rule-list.component.html
+++ b/public/src/app/rule-engine/rule-list/rule-list.component.html
@@ -1,8 +1,8 @@
 <div class="container">
   <div class="header">
-    <span style="font-size: 18px;">Rule Engine</span>
+    <span style="font-size: 18px; margin-left:20px;">Rule Engine</span>
     <div style="display:flex">
-      <button mat-raised-button (click)="translateRules()" color="primary" [disabled]="store.ruleList.length === 0" style="margin-left: 20px;"
+      <button mat-raised-button (click)="translateRules()" color="primary" [disabled]="store.ruleList.length === 0" style="margin-right: 10px; width: 113px;height: 36px;"
         data-tests-id="btnTranslate">
         Translate
       </button>
@@ -20,6 +20,35 @@
     <app-version-type-select #versionEventType [versions]="versions" [metaData]="metaData" (nodesUpdated)="handleUpdateNode($event)"
       (refrashRuleList)="handlePropertyChange()"></app-version-type-select>
 
+    <!-- <div class="container-phase-notify">
+      <div>
+        <span class="field-label required" style="margin-right: 10px;">
+          phase
+        </span>
+        <select name="phase" [(ngModel)]="phase" data-tests-id="phase" style="height: 27px; padding: 0.3rem; margin-right: 18px;"
+          class="field-select">
+          <option [ngValue]="null" disabled>Select phase</option>
+        </select>
+      </div>
+
+      <div class="default" style="display: flex; align-items: center">
+        <div class="pretty p-svg">
+          <input type="checkbox" name="notifyCheckbox" data-tests-id="notifyCheckbox" />
+          <div class="state">
+            <svg class="svg svg-icon" viewBox="0 0 20 20">
+              <path d="M7.629,14.566c0.125,0.125,0.291,0.188,0.456,0.188c0.164,0,0.329-0.062,0.456-0.188l8.219-8.221c0.252-0.252,0.252-0.659,0-0.911c-0.252-0.252-0.659-0.252-0.911,0l-7.764,7.763L4.152,9.267c-0.252-0.251-0.66-0.251-0.911,0c-0.252,0.252-0.252,0.66,0,0.911L7.629,14.566z"
+                style="stroke: #009fdb; fill:#009fdb;"></path>
+            </svg>
+            <label>notify OID</label>
+          </div>
+        </div>
+        <div class="input-wrapper">
+          <input type="text" ngModel required name="notify-oid" data-tests-id="notify-oid" class="input">
+        </div>
+      </div>
+
+    </div> -->
+
     <div *ngIf="targetSource && store.ruleList.length === 0" style="margin: 30px 0; display: flex; align-items: center; justify-content: center; flex-direction: column;">
 
       <div style="margin: 3em 0 2em 0;">
@@ -40,9 +69,6 @@
     </div>
 
     <div *ngIf="store.ruleList.length > 0">
-      <div style="padding: 10px 0;">
-        Rules
-      </div>
       <div style="display: flex; align-items: center;">
         <button mat-mini-fab color="primary" id="addMoreRule" data-tests-id="addMoreRule" style="height: 24px; width: 24px; display:flex"
           (click)="openAction()">
diff --git a/public/src/app/rule-engine/rule-list/rule-list.component.scss b/public/src/app/rule-engine/rule-list/rule-list.component.scss
index c4aee05..6446fbd 100644
--- a/public/src/app/rule-engine/rule-list/rule-list.component.scss
+++ b/public/src/app/rule-engine/rule-list/rule-list.component.scss
@@ -4,30 +4,30 @@
   height: 100%;
   display: flex;
   flex-direction: column;
-
+  margin: 0;
+  padding: 0;
   .header {
     position: relative;
     display: flex;
     justify-content: space-between;
     align-items: center;
     color: #191919;
-    border-bottom: 2px solid #d2d2d2;
-    padding-bottom: 0.5rem;
-    margin: 1rem;
+    border-bottom: 1px solid #d2d2d2;
+    padding-bottom: 5px;
+    margin: 8px 0;
   }
-
   .item {
     border: 1px solid #d2d2d2;
     padding: 0 10px;
     height: 40px;
   }
-
   .mat-fab,
   .mat-mini-fab,
   .mat-raised-button {
     box-shadow: none;
   }
 }
+
 .my-full-screen-dialog .mat-dialog-container {
   max-width: none;
   width: 100vw;
@@ -46,7 +46,6 @@
   display: flex !important;
   justify-content: center !important;
   color: #d2d2d2 !important;
-
   &:hover {
     color: #009fdb !important;
   }
@@ -68,6 +67,7 @@
 .mat-mini-fab .mat-button-wrapper {
   padding: 0 !important;
 }
+
 .mat-icon {
   // width: 18px;
   // height: 18px;
@@ -75,35 +75,45 @@
   justify-content: center !important;
   align-items: center !important;
 }
+
 /* Rules for sizing the icon. */
+
 .material-icons.md-18 {
   font-size: 18px;
 }
+
 .material-icons.md-24 {
   font-size: 24px;
 }
+
 .material-icons.md-30 {
   font-size: 30px;
 }
+
 .material-icons.md-36 {
   font-size: 36px;
 }
+
 .material-icons.md-48 {
   font-size: 48px;
 }
 
 /* Rules for using icons as black on a light background. */
+
 .material-icons.md-dark {
   color: rgba(0, 0, 0, 0.54);
 }
+
 .material-icons.md-dark.md-inactive {
   color: rgba(0, 0, 0, 0.26);
 }
 
 /* Rules for using icons as white on a dark background. */
+
 .material-icons.md-light {
   color: rgba(255, 255, 255, 1);
 }
+
 .material-icons.md-light.md-inactive {
   color: rgba(255, 255, 255, 0.3);
 }
diff --git a/public/src/app/rule-engine/rule-list/rule-list.component.ts b/public/src/app/rule-engine/rule-list/rule-list.component.ts
index 45cfbd0..2857ea2 100644
--- a/public/src/app/rule-engine/rule-list/rule-list.component.ts
+++ b/public/src/app/rule-engine/rule-list/rule-list.component.ts
@@ -1,12 +1,11 @@
-import { Component, ViewEncapsulation, ViewChild } from '@angular/core';
+import { Component, ViewChild, ViewEncapsulation } from '@angular/core';
 import { MatDialog } from '@angular/material';
-import { ActionListComponent } from '../action-list/action-list.component';
-import { RuleEngineApiService } from '../api/rule-engine-api.service';
-import { ConfirmPopupComponent } from '../confirm-popup/confirm-popup.component';
-import { Store } from '../../store/store';
 import { isEmpty } from 'lodash';
 import { ToastrService } from 'ngx-toastr';
 import { timer } from 'rxjs/observable/timer';
+import { Store } from '../../store/store';
+import { RuleEngineApiService } from '../api/rule-engine-api.service';
+import { ConfirmPopupComponent } from '../confirm-popup/confirm-popup.component';
 
 const primaryColor = '#009fdb';
 
@@ -58,7 +57,11 @@
           );
           this.store.updateRuleList(Object.values(response.rules));
           this.targetSource = response.schema;
+          this.store.notifyIdValue = response.notifyId;
+          this.versionType.notifyIdCheckbox =
+            response.notifyId !== '' ? true : false;
         } else {
+          this.versionType.notifyIdCheckbox = false;
           this.store.resetRuleList();
           this.versionType.updateVersionTypeFlag(false);
           this.targetSource = null;
@@ -83,20 +86,29 @@
     private toastr: ToastrService,
     public store: Store
   ) {
-    this.store.loader = true;
-    this.params = {
-      vfcmtUuid: this.store.mcUuid,
-      nodeName: this.store.tabParmasForRule[0].name,
-      nodeId: this.store.tabParmasForRule[0].nid,
-      fieldName: this.store.configurationForm[0].name,
-      userId: 'ym903w', // this.store.sdcParmas.userId
-      flowType: this.store.cdump.flowType
-    };
-    console.log('params: %o', this.params);
-    this.store.loader = true;
-    // set api params by iframe url query
-    this._ruleApi.setParams(this.params);
-    this.getListOfRules();
+    this.store.loader = false;
+    this._ruleApi.tabIndex.subscribe(index => {
+      console.log('rule index in rule-list component:', index);
+      const tabName = this.store.cdump.nodes[index].name;
+      console.log('tab name:', tabName);
+
+      if (tabName.toLowerCase().includes('map')) {
+        this.params = {
+          vfcmtUuid: this.store.mcUuid,
+          nodeName: this.store.tabParmasForRule[0].name,
+          nodeId: this.store.tabParmasForRule[0].nid,
+          fieldName: this.store.tabsProperties[index][0].name,
+          userId: this.store.sdcParmas.userId,
+          flowType: this.store.cdump.flowType
+        };
+        console.log('params: %o', this.params);
+        this.store.loader = true;
+        // set api params by iframe url query
+        this._ruleApi.setParams(this.params);
+        store.ruleListExistParams = this.params;
+        this.getListOfRules();
+      }
+    });
   }
 
   handlePropertyChange() {
@@ -108,7 +120,8 @@
   translateRules() {
     this.store.loader = true;
     // send translate JSON
-    this._ruleApi.translate().subscribe(
+    const nofityId = this.store.notifyIdValue;
+    this._ruleApi.translate(nofityId).subscribe(
       data => {
         this.store.loader = false;
         console.log(JSON.stringify(data));
@@ -116,7 +129,7 @@
         this.store.configurationForm.forEach(property => {
           console.log('mappingTarget ', this.versionType.mappingTarget);
           if (property.name === this.versionType.mappingTarget) {
-            property.assignment.value = JSON.stringify(data);
+            property.value = JSON.stringify(data);
             domElementName = property.name;
             console.log(property.name);
           }
diff --git a/public/src/app/rule-engine/target/target.component.html b/public/src/app/rule-engine/target/target.component.html
index 7a321ef..d643ad8 100644
--- a/public/src/app/rule-engine/target/target.component.html
+++ b/public/src/app/rule-engine/target/target.component.html
@@ -7,7 +7,7 @@
       <img src="{{imgBase}}/target.svg" alt="target">
     </span>
   </div>
-  <div class="bottom-select" *ngIf="showOption" [@toggleDropdown]>
+  <div class="bottom-select" *ngIf="showOption">
     <div class="filter-container" style="display: flex; border-bottom: 1px solid #F2F2F2;margin-bottom: 1rem; width:100%;">
       <input id="filter" #filter class="filter" (keyup)="tree.treeModel.filterNodes(filter.value)" placeholder="Search..." />
       <button mat-raised-button style="min-width: 18px; box-shadow: none; display: flex; justify-content: center;" (click)="tree.treeModel.clearFilter(); filter.value = ''">
diff --git a/public/src/app/rule-engine/target/target.component.spec.ts b/public/src/app/rule-engine/target/target.component.spec.ts
index 6ddd8cd..e9a69c8 100644
--- a/public/src/app/rule-engine/target/target.component.spec.ts
+++ b/public/src/app/rule-engine/target/target.component.spec.ts
@@ -1,10 +1,9 @@
-import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-import { By } from '@angular/platform-browser';
-import { DebugElement } from '@angular/core';
+import { CUSTOM_ELEMENTS_SCHEMA, DebugElement } from '@angular/core';
+import { ComponentFixture, TestBed, async } from '@angular/core/testing';
 import { FormsModule } from '@angular/forms';
-import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 import { MatButtonModule, MatIconModule } from '@angular/material';
+import { By } from '@angular/platform-browser';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 // component
 import { TargetComponent } from './target.component';
 
@@ -46,12 +45,28 @@
     const openTargetElement = fixture.debugElement
       .query(By.css('span[data-tests-id=openTargetTree]'))
       .nativeElement.click();
-
     fixture.detectChanges();
-
     const treeContainer = fixture.debugElement.query(
       By.css('.filter-container')
     );
     expect(treeContainer).not.toBeNull();
   });
+
+  it('should toggle target tree when clicking 2 times on button', () => {
+    fixture.debugElement
+      .query(By.css('span[data-tests-id=openTargetTree]'))
+      .nativeElement.click();
+    fixture.detectChanges();
+    fixture.debugElement
+      .query(By.css('span[data-tests-id=openTargetTree]'))
+      .nativeElement.click();
+    fixture.detectChanges();
+    const treeContainer = fixture.debugElement.query(
+      By.css('.filter-container')
+    );
+    expect(treeContainer).toBeNull();
+  });
+
+  // it('check when input change', () => {   tree.setData({nodes: _nodes, options:
+  // null, events: null});   component.filterFn('liav', tree); });
 });
diff --git a/public/src/app/rule-engine/target/target.component.ts b/public/src/app/rule-engine/target/target.component.ts
index f17cdef..c9aa75c 100644
--- a/public/src/app/rule-engine/target/target.component.ts
+++ b/public/src/app/rule-engine/target/target.component.ts
@@ -7,13 +7,8 @@
   EventEmitter
 } from '@angular/core';
 import { TreeModel, TreeComponent, ITreeOptions } from 'angular-tree-component';
-import {
-  trigger,
-  state,
-  animate,
-  transition,
-  style
-} from '@angular/animations';
+// import {trigger, state, animate, transition, style} from
+// '@angular/animations';
 import { fuzzysearch, getBranchRequierds, validation } from './target.util';
 import { environment } from '../../../environments/environment';
 import { NgForm } from '@angular/forms';
@@ -22,24 +17,15 @@
   selector: 'app-target',
   templateUrl: './target.component.html',
   styleUrls: ['./target.component.scss'],
-  encapsulation: ViewEncapsulation.None,
-  animations: [
-    trigger('toggleDropdown', [
-      transition('void => *', [
-        style({ opacity: 0, offset: 0, height: 0 }),
-        animate('300ms cubic-bezier(0.17, 0.04, 0.03, 0.94)')
-      ]),
-      transition('* => void', [
-        style({ opacity: 1, offset: 1, height: 'auto' }),
-        animate('100ms cubic-bezier(0.17, 0.04, 0.03, 0.94)')
-      ])
-    ])
-  ]
+  encapsulation: ViewEncapsulation.None
 })
 export class TargetComponent {
   imgBase = environment.imagePath;
   showOption = false;
-  selectedNode = { name: '', id: '' };
+  selectedNode = {
+    name: '',
+    id: ''
+  };
   @Input() nodes;
   @Output() onTargetChange = new EventEmitter();
   @ViewChild(TreeComponent) private tree: TreeComponent;
diff --git a/public/src/app/rule-engine/target/target.validation.spec.ts b/public/src/app/rule-engine/target/target.validation.spec.ts
index 71dc083..e66235f 100644
--- a/public/src/app/rule-engine/target/target.validation.spec.ts
+++ b/public/src/app/rule-engine/target/target.validation.spec.ts
@@ -1,8 +1,7 @@
-import { TestBed, async } from '@angular/core/testing';
-import { TreeModel, TreeComponent, ITreeOptions } from 'angular-tree-component';
-import { validation, getBranchRequierds } from './target.util';
+import { TreeModel } from 'angular-tree-component';
+import { fuzzysearch, getBranchRequierds, validation } from './target.util';
 
-const _nodes = [
+export const _nodes = [
   {
     id: 1,
     name: 'North America',
@@ -13,46 +12,68 @@
         name: 'United States',
         requiredChildren: ['New York', 'Florida'],
         children: [
-          { id: 111, name: 'New York' },
-          { id: 112, name: 'California' },
-          { id: 113, name: 'Florida' }
+          {
+            id: 111,
+            name: 'New York'
+          },
+          {
+            id: 112,
+            name: 'California'
+          },
+          {
+            id: 113,
+            name: 'Florida'
+          }
         ]
       },
-      { id: 12, name: 'Canada' }
+      {
+        id: 12,
+        name: 'Canada'
+      }
     ]
   },
   {
     name: 'South America',
-    children: [{ name: 'Argentina', children: [] }, { name: 'Brazil' }]
+    children: [
+      {
+        name: 'Argentina',
+        children: []
+      },
+      {
+        name: 'Brazil'
+      }
+    ]
   },
   {
     name: 'Europe',
     children: [
-      { name: 'England' },
-      { name: 'Germany' },
-      { name: 'France' },
-      { name: 'Italy' },
-      { name: 'Spain' }
+      {
+        name: 'England'
+      },
+      {
+        name: 'Germany'
+      },
+      {
+        name: 'France'
+      },
+      {
+        name: 'Italy'
+      },
+      {
+        name: 'Spain'
+      }
     ]
   }
 ];
 
-const tree = new TreeModel();
+export const tree = new TreeModel();
 
 describe('treeTest', () => {
   beforeAll(() => {
-    tree.setData({
-      nodes: _nodes,
-      options: null,
-      events: null
-    });
+    tree.setData({ nodes: _nodes, options: null, events: null });
   });
 
-  it('should return node branch requireds', () => {
-    // console.log('root', tree.getFirstRoot().data.name);
-    // console.log(tree.getNodeBy((node) => node.data.name === 'California').data.uuid);
-    // console.log(tree.getNodeBy((node) => node.data.name === 'California').id);
-    // console.log(tree.getNodeById(1));
+  it('should return node branch requireds toBeGreaterThan 1', () => {
     const selectedNode = tree.getNodeBy(
       node => node.data.name === 'California'
     );
@@ -60,6 +81,14 @@
     const expected = [['New York', 'Florida'], ['United States']];
 
     expect(result.length).toBeGreaterThan(1);
+  });
+
+  it('should return node branch requireds', () => {
+    const selectedNode = tree.getNodeBy(
+      node => node.data.name === 'California'
+    );
+    const result = getBranchRequierds(selectedNode, []);
+    const expected = [['New York', 'Florida'], ['United States']];
     expect(result).toEqual(expected);
   });
 
@@ -67,9 +96,14 @@
     const userSelect = ['Florida', 'New York', 'United States'];
     const selectedNode = tree.getNodeBy(node => node.data.name === 'New York');
     const result = validation(selectedNode, userSelect);
+    expect(result).toEqual([]);
+  });
+  it('should return empty array - success state lenght zero', () => {
+    const userSelect = ['Florida', 'New York', 'United States'];
+    const selectedNode = tree.getNodeBy(node => node.data.name === 'New York');
+    const result = validation(selectedNode, userSelect);
 
     expect(result.length).toEqual(0);
-    expect(result).toEqual([]);
   });
 
   it('should return validation array - missing required filed', () => {
@@ -80,4 +114,29 @@
 
     expect(result).toEqual(expected);
   });
+
+  it('fuzzysearch find match one char', () => {
+    const search = fuzzysearch('1', '1');
+    expect(search).toBe(true);
+  });
+
+  it('fuzzysearch find match string', () => {
+    const search = fuzzysearch('liav', 'liavEzar');
+    expect(search).toBe(true);
+  });
+
+  it('fuzzysearch not find match', () => {
+    const search = fuzzysearch('1', '2');
+    expect(search).toBe(false);
+  });
+
+  it('fuzzysearch not find match', () => {
+    const search = fuzzysearch('liavEzar', 'liav');
+    expect(search).toBe(false);
+  });
+
+  it('fuzzysearch not find match', () => {
+    const search = fuzzysearch('var', 'r2f44');
+    expect(search).toBe(false);
+  });
 });
diff --git a/public/src/app/rule-engine/version-type-select/version-type-select.component.html b/public/src/app/rule-engine/version-type-select/version-type-select.component.html
index 79b9eae..74c55a8 100644
--- a/public/src/app/rule-engine/version-type-select/version-type-select.component.html
+++ b/public/src/app/rule-engine/version-type-select/version-type-select.component.html
@@ -1,34 +1,64 @@
 <div class="selected-event">
 
-  <div style="flex:1; display: flex; align-items: center;">
+  <div style="flex:1; display: flex; align-items: flex-end;">
 
-    <span class="field-label required" style="margin-right: 10px;">Mapping Target</span>
-    <select name="mappingTarget" [(ngModel)]="mappingTarget" (ngModelChange)="onChangeMapping($event)" data-tests-id="mappingDdl"
-      style="height: 27px; padding: 0.3rem; margin-right: 18px;" class="field-select">
-      <option [ngValue]="null" disabled>Select Mapping</option>
-      <option *ngFor="let target of advancedSetting" [value]="target.name" data-tests-id="templateOptions">{{target.name}}</option>
-    </select>
+    <div style="display:flex; flex-direction:column; margin-right: 25px;">
+      <span class="field-label required space-down" style="margin-right: 10px;">Mapping Target</span>
+      <select name="mappingTarget" [(ngModel)]="mappingTarget" (ngModelChange)="onChangeMapping($event)" data-tests-id="mappingDdl"
+        style="height: 35px; padding: 0.3rem; border: 1px solid #d2d2d2" class="field-select">
+        <option [ngValue]="null" disabled>Select Mapping</option>
+        <optgroup label="Rules Configured">
+          <option *ngFor="let target of advancedSetting" [hidden]="!target.isExist" [value]="target.name" data-tests-id="templateOptionsExist">{{target.name}}</option>
+        </optgroup>
+        <optgroup label="No Mapping Configuration">
+          <option *ngFor="let target of advancedSetting" [hidden]="target.isExist" [value]="target.name" data-tests-id="templateOptionsNotExist">{{target.name}}</option>
+        </optgroup>
+      </select>
+    </div>
 
-    <span class="field-label required" style="font-size: 13px; margin-right: 10px; display: flex;
-    align-items: center;" [ngClass]="{'required' : !readOnly}">
-      Version
-    </span>
-    <select *ngIf="!readOnly" style="height: 27px; padding: 0.3rem; margin-right: 18px;" [(ngModel)]="selectedVersion" (ngModelChange)="onSelectVersion($event)"
-      data-tests-id="selectVersion">
-      <option [ngValue]="null" disabled>Select Version</option>
-      <option *ngFor="let version of versions" [value]="version" data-tests-id="option">{{version}}</option>
-    </select>
-    <span *ngIf="readOnly" style="height: 27px; padding: 0.3rem; width:100px; margin-right: 18px; border: 1px solid #D2D2D2; display: flex; align-items: center; background: #F2F2F2">{{selectedVersion}}</span>
+    <div style="display:flex; flex-direction:column; margin-right: 25px;">
+      <span class="field-label required space-down" style="font-size: 13px; margin-right: 10px; display: flex;
+        align-items: center;" [ngClass]="{'required' : !readOnly}">
+        Version
+      </span>
+      <select *ngIf="!readOnly" style="height: 35px; padding: 0.3rem; border: 1px solid #d2d2d2" [(ngModel)]="selectedVersion" (ngModelChange)="onSelectVersion($event)"
+        data-tests-id="selectVersion">
+        <option [ngValue]="null" disabled>Select Version</option>
+        <option *ngFor="let version of versions" [value]="version" data-tests-id="option">{{version}}</option>
+      </select>
+      <span *ngIf="readOnly" style="height: 35px; padding: 0.3rem; width:100px; border: 1px solid #D2D2D2; display: flex; align-items: center; background: #F2F2F2">{{selectedVersion}}</span>
+    </div>
 
-    <span class="field-label required" style="font-size: 13px; display: flex; align-items: center; width: 100px;" [ngClass]="{'required' : !readOnly}">
-      Event Domain
-    </span>
-    <select *ngIf="!readOnly" style="height: 27px; padding: 0.3rem;" [(ngModel)]="selectedEvent" (ngModelChange)="onSelectEventType($event)"
-      data-tests-id="selectEventType">
-      <option [ngValue]="null" disabled>Select Type</option>
-      <option *ngFor="let event of events" [value]="event" data-tests-id="option">{{event | slice:0:event.length-6}}</option>
-    </select>
-    <span *ngIf="readOnly" style="height: 27px; padding: 0.3rem; width:200px; border: 1px solid #D2D2D2; display: flex; align-items: center; background: #F2F2F2">{{selectedEvent | slice:0:selectedEvent.length-6}}</span>
+    <div style="display:flex; flex-direction:column; margin-right: 25px;">
+      <span class="field-label required space-down" style="font-size: 13px; display: flex; align-items: center; width: 100px;"
+        [ngClass]="{'required' : !readOnly}">
+        Event Domain
+      </span>
+      <select *ngIf="!readOnly" style="height: 35px; padding: 0.3rem; border: 1px solid #d2d2d2" [(ngModel)]="selectedEvent" (ngModelChange)="onSelectEventType($event)"
+        data-tests-id="selectEventType">
+        <option [ngValue]="null" disabled>Select Type</option>
+        <option *ngFor="let event of events" [value]="event" data-tests-id="option">{{event | slice:0:event.length-6}}</option>
+      </select> 
+      <span *ngIf="readOnly" style="height: 35px; padding: 0.3rem; width:200px; border: 1px solid #D2D2D2; display: flex; align-items: center; background: #F2F2F2">{{selectedEvent | slice:0:selectedEvent.length-6}}</span>
+    </div>
+
+    <div class="notifyId" style="display: flex; flex-direction:column; margin-right:25px;">
+      <div class="pretty p-svg space-down">
+        <input type="checkbox" name="notifyIdCheckbox" data-tests-id="notifyIdCheckbox" [checked]="notifyIdCheckbox" (change)="changeNotifyId()"
+        />
+        <div class="state">
+          <!-- svg path -->
+          <svg class="svg svg-icon" viewBox="0 0 20 20">
+            <path d="M7.629,14.566c0.125,0.125,0.291,0.188,0.456,0.188c0.164,0,0.329-0.062,0.456-0.188l8.219-8.221c0.252-0.252,0.252-0.659,0-0.911c-0.252-0.252-0.659-0.252-0.911,0l-7.764,7.763L4.152,9.267c-0.252-0.251-0.66-0.251-0.911,0c-0.252,0.252-0.252,0.66,0,0.911L7.629,14.566z"
+              style="stroke: #009fdb; fill:#009fdb;"></path>
+          </svg>
+          <label style="margin-left: 5px;">Notify OID</label>
+        </div>
+      </div>
+      <div *ngIf="notifyIdCheckbox" class="input-wrapper">
+        <input type="text" ngModel required name="defaultInput" data-tests-id="defaultInput" [(ngModel)]="store.notifyIdValue" class="input">
+      </div>
+    </div>
   </div>
 
 </div>
diff --git a/public/src/app/rule-engine/version-type-select/version-type-select.component.scss b/public/src/app/rule-engine/version-type-select/version-type-select.component.scss
index 9f7bad3..1be996e 100644
--- a/public/src/app/rule-engine/version-type-select/version-type-select.component.scss
+++ b/public/src/app/rule-engine/version-type-select/version-type-select.component.scss
@@ -1,7 +1,6 @@
 .selected-event {
   display: flex;
-  margin: 10px 0;
-  // align-items: center;
+  // margin: 10px 0; // align-items: center;
   flex-direction: column;
   margin-bottom: 30px;
 }
@@ -23,6 +22,20 @@
   outline: none;
 }
 
+.space-down {
+  margin-bottom: 5px;
+}
+
+.input-wrapper {
+  .input {
+    height: 35px;
+    border-radius: 2px;
+    padding: 5px;
+    width: 100%;
+    border: 1px solid #d2d2d2;
+  }
+}
+
 .target-field {
   width: 370px;
   display: flex;
@@ -42,5 +55,6 @@
     min-width: 250px;
     padding: 5px 0 5px 5px;
     margin: 0;
+    border: 1px solid #d2d2d2;
   }
 }
diff --git a/public/src/app/rule-engine/version-type-select/version-type-select.component.ts b/public/src/app/rule-engine/version-type-select/version-type-select.component.ts
index b4170a5..ff229cd 100644
--- a/public/src/app/rule-engine/version-type-select/version-type-select.component.ts
+++ b/public/src/app/rule-engine/version-type-select/version-type-select.component.ts
@@ -1,6 +1,6 @@
-import { Component, Output, EventEmitter, Input } from '@angular/core';
-import { RuleEngineApiService } from '../api/rule-engine-api.service';
+import { Component, EventEmitter, Input, Output } from '@angular/core';
 import { Store } from '../../store/store';
+import { RuleEngineApiService } from '../api/rule-engine-api.service';
 
 @Component({
   selector: 'app-version-type-select',
@@ -19,25 +19,60 @@
   @Input() metaData;
   @Output() nodesUpdated = new EventEmitter();
   @Output() refrashRuleList = new EventEmitter();
-  advancedSetting;
+  advancedSetting: Array<any>;
+  notifyIdCheckbox = false;
 
   constructor(private _ruleApi: RuleEngineApiService, public store: Store) {
     this.selectedVersion = null;
     this.selectedEvent = null;
     // set ddl with the first option value.
-    this.mappingTarget = this.store.configurationForm[0].name;
-    this.advancedSetting = this.store.configurationForm.filter(item => {
-      if (
-        !(
-          item.hasOwnProperty('constraints') &&
-          !item.assignment.value.includes('get_input')
-        )
-      ) {
-        return item;
+
+    this._ruleApi.tabIndex.subscribe(index => {
+      console.log('rule index:', index);
+
+      const tabName = this.store.cdump.nodes[index].name;
+      console.log('tab name:', tabName);
+
+      if (tabName.toLowerCase().includes('map')) {
+        this.mappingTarget = this.store.tabsProperties[index][0].name;
+        this.advancedSetting = this.store.tabsProperties[index].filter(item => {
+          if (
+            !(
+              item.hasOwnProperty('constraints') &&
+              !item.value.includes('get_input')
+            )
+          ) {
+            return item;
+          }
+        });
+
+        this._ruleApi
+          .generateMappingRulesFileName(
+            this.store.ruleListExistParams.nodeName,
+            this.store.ruleListExistParams.nodeId,
+            this.store.ruleListExistParams.vfcmtUuid
+          )
+          .subscribe(response => {
+            console.log('generateMappingRulesFileName response: ', response);
+            this.advancedSetting.forEach(element => {
+              if (response.includes(element.name)) {
+                element.isExist = true;
+              } else {
+                element.isExist = false;
+              }
+            });
+          });
       }
     });
   }
 
+  changeNotifyId() {
+    if (!this.notifyIdCheckbox) {
+      this.store.notifyIdValue = '';
+    }
+    return (this.notifyIdCheckbox = !this.notifyIdCheckbox);
+  }
+
   onChangeMapping(configurationKey) {
     console.log('changing propertiy key:', configurationKey);
     this._ruleApi.setFieldName(configurationKey);
@@ -78,9 +113,7 @@
       .subscribe(tree => {
         console.log('tree: ', tree);
         this.loader = false;
-        this.nodesUpdated.emit({
-          nodes: tree
-        });
+        this.nodesUpdated.emit({ nodes: tree });
       });
   }
 }
diff --git a/public/src/app/rule-frame/rule-frame.component.html b/public/src/app/rule-frame/rule-frame.component.html
index 10f3032..e0afa3d 100644
--- a/public/src/app/rule-frame/rule-frame.component.html
+++ b/public/src/app/rule-frame/rule-frame.component.html
@@ -1,16 +1,16 @@
 <div style="position: relative; display: flex; justify-content: flex-end; height: 100%;">
 
-  <div *ngIf="!tabName.includes('map')" style="margin: 1em;">
+  <div *ngIf="!tabName.toLowerCase().includes('map')" style="margin: 1em;">
     <app-bar-icons [tabName]="tabName"></app-bar-icons>
   </div>
 
   <!-- rule engine -->
-  <div style="width: 100%;" *ngIf="tabName.includes('map')">
+  <div style="width: 100%;" *ngIf="tabName.toLowerCase().includes('map')">
     <app-slide-panel [activePane]="store.isLeftVisible ? 'left' : 'right'">
       <div leftPane style="height: 100%; overflow: auto;">
         <app-rule-list></app-rule-list>
       </div>
-      <div rightPane style="height: 100%; overflow: auto;">
+      <div rightPane style="height: 100%; overflow: scroll;">
         <app-action-list></app-action-list>
       </div>
     </app-slide-panel>
diff --git a/public/src/app/rule-frame/rule-frame.component.ts b/public/src/app/rule-frame/rule-frame.component.ts
index 4d5f999..2729c14 100644
--- a/public/src/app/rule-frame/rule-frame.component.ts
+++ b/public/src/app/rule-frame/rule-frame.component.ts
@@ -1,6 +1,5 @@
-import { Component, OnDestroy, Input, ViewChild } from '@angular/core';
+import { Component, Input, OnDestroy } from '@angular/core';
 import { Store } from '../store/store';
-import { BarIconsComponent } from '../bar-icons/bar-icons.component';
 
 @Component({
   selector: 'app-rule-frame',
diff --git a/public/src/app/sdc-notify-dialog/sdc-notify-dialog.component.html b/public/src/app/sdc-notify-dialog/sdc-notify-dialog.component.html
new file mode 100644
index 0000000..f8d51fe
--- /dev/null
+++ b/public/src/app/sdc-notify-dialog/sdc-notify-dialog.component.html
@@ -0,0 +1,39 @@
+<p-dialog [style]="{'border-top-color':'#ffb81c'}" [closable]="false" [(visible)]="store.displaySDCDialog" modal="modal" styleClass="dcae-notify"
+  width="500" [responsive]="true" data-tests-id="sdc-dialog">
+  <p-header>
+    <div style="display: flex;">
+      <span style="color: #ffb81c;
+          padding-right: 15px;
+          height: 100%;
+          display: flex;
+          justify-content: center;
+          align-items: center;" [innerHTML]="'alert-triangle' | feather:28"></span>
+      <span style="font-family: 'Open Sans', sans-serif;
+      font-size: 24px; width: 100%;">
+        Exit from DCAE
+      </span>
+      <span style="
+          height: 100%;
+          display: flex;
+          justify-content: center;
+          color:rgb(90, 90, 90);
+          align-items: center;" [innerHTML]="'x' | feather:20
+          " (click)="closeforChange()"></span>
+    </div>
+  </p-header>
+
+  <div style="padding: 0 0 20px 43px; font-family: 'Open Sans', sans-serif;
+  font-size: 14px;">
+    Do you want to save?
+  </div>
+
+  <p-footer>
+    <button mat-raised-button color="primary" style="background-color: #FFB81C; margin-right: 10px; font-size: 14px; font-family: 'Open Sans', sans-serif; height: 36px;" (click)="closeDialog()" data-tests-id="error-cancel">
+      SAVE
+    </button>
+    <button mat-raised-button class="btn-secondry" style="border-color: #FFB81C !important; color:#FFB81C !important; font-size: 14px; font-family: 'Open Sans', sans-serif;text-align: center; height: 36px;" (click)="closeforChange()"
+      data-tests-id="error-cancel">
+      DISCARD
+    </button>
+  </p-footer>
+</p-dialog>
diff --git a/public/src/app/sdc-notify-dialog/sdc-notify-dialog.component.scss b/public/src/app/sdc-notify-dialog/sdc-notify-dialog.component.scss
new file mode 100644
index 0000000..a775398
--- /dev/null
+++ b/public/src/app/sdc-notify-dialog/sdc-notify-dialog.component.scss
@@ -0,0 +1,17 @@
+:host /deep/ .dcae-notify {
+  border-top: solid 6px #ffb81c;
+}
+:host /deep/ .ui-dialog .ui-dialog-titlebar {
+  padding-top: 15px;
+  padding-left: 20px;
+  padding-right: 12px;
+  padding-bottom: 0;
+}
+
+:host /deep/ .ui-dialog-footer {
+  padding: 10px;
+}
+
+:host /deep/ .ui-dialog.ui-widget .ui-dialog-content {
+  padding-top: 10px;
+}
diff --git a/public/src/app/sdc-notify-dialog/sdc-notify-dialog.component.ts b/public/src/app/sdc-notify-dialog/sdc-notify-dialog.component.ts
new file mode 100644
index 0000000..7572012
--- /dev/null
+++ b/public/src/app/sdc-notify-dialog/sdc-notify-dialog.component.ts
@@ -0,0 +1,72 @@
+import { Component, ElementRef, ViewChild } from '@angular/core';
+import { Router } from '@angular/router';
+import { RestApiService } from '../api/rest-api.service';
+import { MainComponent } from '../main/main.component';
+import { Store } from '../store/store';
+
+@Component({
+  selector: 'app-sdc-notify-dialog',
+  templateUrl: './sdc-notify-dialog.component.html',
+  styleUrls: ['./sdc-notify-dialog.component.scss']
+})
+export class SdcNotifyDialogComponent {
+  @ViewChild(MainComponent) mainComponent: ElementRef;
+
+  constructor(
+    public store: Store,
+    private router: Router,
+    private _restApi: RestApiService
+  ) {}
+
+  closeDialog() {
+    const currentUrl = this.router.url;
+    if (currentUrl.includes('main')) {
+      if (this.store.cdumpIsDirty) {
+        this.saveCDUMP();
+      } else {
+        this.completeAndClose();
+      }
+    } else {
+      this.completeAndClose();
+    }
+  }
+
+  saveCDUMP() {
+    this.store.loader = true;
+    this._restApi
+      .saveMonitoringComponent({
+        contextType: this.store.sdcParmas.contextType,
+        serviceUuid: this.store.sdcParmas.uuid,
+        vfiName: this.store.vfiName,
+        vfcmtUuid: this.store.mcUuid,
+        flowType: this.store.flowType,
+        cdump: this.store.cdump
+      })
+      .subscribe(
+        success => {
+          this.store.loader = false;
+          this.store.mcUuid = success.uuid;
+          this.store.ifrmaeMessenger.notify('ACTION_COMPLETED');
+        },
+        error => {
+          this.store.loader = false;
+          console.log(error.notes);
+          this.store.ifrmaeMessenger.notify('ACTION_COMPLETED');
+          this.store.ErrorContent = Object.values(error.requestError);
+          this.store.displayErrorDialog = true;
+        },
+        () => {
+          this.store.ifrmaeMessenger.notify('ACTION_COMPLETED');
+        }
+      );
+  }
+
+  private completeAndClose() {
+    this.store.ifrmaeMessenger.notify('ACTION_COMPLETED');
+    this.store.displaySDCDialog = false;
+  }
+
+  closeforChange() {
+    this.completeAndClose();
+  }
+}
diff --git a/public/src/app/sdc/base-pubsub.ts b/public/src/app/sdc/base-pubsub.ts
new file mode 100644
index 0000000..f7fcadc
--- /dev/null
+++ b/public/src/app/sdc/base-pubsub.ts
@@ -0,0 +1,124 @@
+declare const window: Window;
+
+export interface IPubSubEvent {
+  type: string;
+  originId: string;
+  data: any;
+}
+
+export interface ISubscriber {
+  window: Window;
+  locationUrl: string;
+}
+
+export class BasePubSub {
+  subscribers: Map<string, ISubscriber>;
+  eventsCallbacks: Array<Function>;
+  clientId: string;
+  eventsToWait: Map<string, Array<string>>;
+
+  constructor(pluginId: string) {
+    this.subscribers = new Map<string, ISubscriber>();
+    this.eventsCallbacks = [];
+    this.eventsToWait = new Map<string, Array<string>>();
+    this.clientId = pluginId;
+    this.onMessage = this.onMessage.bind(this);
+
+    window.addEventListener('message', this.onMessage);
+  }
+
+  public register(
+    subscriberId: string,
+    subscriberWindow: Window,
+    subscriberUrl: string
+  ) {
+    const subscriber = {
+      window: subscriberWindow,
+      locationUrl: subscriberUrl || subscriberWindow.location.href
+    };
+
+    this.subscribers.set(subscriberId, subscriber);
+  }
+
+  public unregister(subscriberId: string) {
+    this.subscribers.delete(subscriberId);
+  }
+
+  public on(callback: Function) {
+    const functionExists = this.eventsCallbacks.find((func: Function) => {
+      return callback.toString() === func.toString();
+    });
+
+    if (!functionExists) {
+      this.eventsCallbacks.push(callback);
+    }
+  }
+
+  public off(callback: Function) {
+    const index = this.eventsCallbacks.indexOf(callback);
+    this.eventsCallbacks.splice(index, 1);
+  }
+
+  public notify(eventType: string, eventData?: any) {
+    const eventObj = {
+      type: eventType,
+      data: eventData,
+      originId: this.clientId
+    };
+
+    this.subscribers.forEach(
+      (subscriber: ISubscriber, subscriberId: string) => {
+        subscriber.window.postMessage(eventObj, subscriber.locationUrl);
+      }
+    );
+
+    return {
+      subscribe: function(callbackFn) {
+        if (this.subscribers.size !== 0) {
+          const subscribersToNotify = Array.from(this.subscribers.keys());
+
+          const checkNotifyComplete = (subscriberId: string) => {
+            const index = subscribersToNotify.indexOf(subscriberId);
+            subscribersToNotify.splice(index, 1);
+
+            if (subscribersToNotify.length === 0) {
+              callbackFn();
+            }
+          };
+
+          this.subscribers.forEach(
+            (subscriber: ISubscriber, subscriberId: string) => {
+              if (
+                this.eventsToWait.has(subscriberId) &&
+                this.eventsToWait.get(subscriberId).indexOf(eventType) !== -1
+              ) {
+                const actionCompletedFunction = (
+                  eventData,
+                  subId = subscriberId
+                ) => {
+                  if (eventData.type === 'ACTION_COMPLETED') {
+                    checkNotifyComplete(subId);
+                  }
+                  this.off(actionCompletedFunction);
+                };
+                this.on(actionCompletedFunction);
+              } else {
+                checkNotifyComplete(subscriberId);
+              }
+            }
+          );
+        } else {
+          callbackFn();
+        }
+      }.bind(this)
+    };
+  }
+
+  protected onMessage(event: any) {
+    if (this.subscribers.has(event.data.originId)) {
+      this.eventsCallbacks.forEach((callback: Function) => {
+        callback(event.data, event);
+      });
+    }
+  }
+}
diff --git a/public/src/app/sdc/plugin-pubsub.ts b/public/src/app/sdc/plugin-pubsub.ts
new file mode 100644
index 0000000..848c7d2
--- /dev/null
+++ b/public/src/app/sdc/plugin-pubsub.ts
@@ -0,0 +1,32 @@
+import { BasePubSub } from './base-pubsub';
+
+declare const window: Window;
+
+export class PluginPubSub extends BasePubSub {
+  constructor(
+    pluginId: string,
+    parentUrl: string,
+    eventsToWait?: Array<string>
+  ) {
+    super(pluginId);
+    this.register('sdc-hub', window.parent, parentUrl);
+    this.subscribe(eventsToWait);
+  }
+
+  public subscribe(eventsToWait?: Array<string>) {
+    const registerData = {
+      pluginId: this.clientId,
+      eventsToWait: eventsToWait || []
+    };
+
+    this.notify('PLUGIN_REGISTER', registerData);
+  }
+
+  public unsubscribe() {
+    const unregisterData = {
+      pluginId: this.clientId
+    };
+
+    this.notify('PLUGIN_UNREGISTER', unregisterData);
+  }
+}
diff --git a/public/src/app/store/store.ts b/public/src/app/store/store.ts
index a9f2431..b075699 100644
--- a/public/src/app/store/store.ts
+++ b/public/src/app/store/store.ts
@@ -1,6 +1,6 @@
 import { Injectable } from '@angular/core';
-import { observable, computed, action, toJS, reaction } from 'mobx';
 import { findIndex } from 'lodash';
+import { action, computed, observable, toJS } from 'mobx';
 
 @Injectable()
 export class Store {
@@ -16,6 +16,10 @@
   @observable expandAdvancedSetting = [];
   @observable generalflow;
   @observable vfiName;
+  @observable flowType;
+  @observable ifrmaeMessenger;
+  @observable waitForSave = false;
+  @observable displaySDCDialog = false;
   // error dialog
   @observable displayErrorDialog = false;
   @observable ErrorContent = [];
@@ -23,9 +27,11 @@
   // rule-engine
   @observable tabParmasForRule;
   @observable ruleList = new Array();
+  @observable ruleListExistParams;
   @observable ruleEditorInitializedState;
   @observable isLeftVisible;
   @observable inprogress;
+  @observable notifyIdValue = '';
 
   @action
   updateRuleInList(rule) {
@@ -82,6 +88,13 @@
         } else if (typeof x.assignment.value === 'object') {
           x.assignment.value = JSON.stringify(x.assignment.value);
         }
+        if (x.value) {
+          if (typeof x.value === 'object') {
+            x.value = JSON.stringify(x.value);
+          }
+        } else if (!x.value) {
+          x.value = x.assignment.value;
+        }
         return x;
       });
     });
diff --git a/public/src/environments/environment.prod.ts b/public/src/environments/environment.prod.ts
index bc3ac4b..84965a9 100644
--- a/public/src/environments/environment.prod.ts
+++ b/public/src/environments/environment.prod.ts
@@ -1,5 +1,5 @@
 export const environment = {
   production: true,
-  apiBaseUrl: 'dcae/dcaeProxy',
-  imagePath: 'dcae_fe/assets/images'
+  apiBaseUrl: 'dcaed/dcaeProxy',
+  imagePath: 'dcaed/assets/images'
 };
diff --git a/public/src/polyfills.ts b/public/src/polyfills.ts
index d68672f..5db0ca6 100644
--- a/public/src/polyfills.ts
+++ b/public/src/polyfills.ts
@@ -19,48 +19,39 @@
  */
 
 /** IE9, IE10 and IE11 requires all of the following polyfills. **/
-// import 'core-js/es6/symbol';
-// import 'core-js/es6/object';
-// import 'core-js/es6/function';
-// import 'core-js/es6/parse-int';
-// import 'core-js/es6/parse-float';
-// import 'core-js/es6/number';
-// import 'core-js/es6/math';
-// import 'core-js/es6/string';
-// import 'core-js/es6/date';
-// import 'core-js/es6/array';
-// import 'core-js/es6/regexp';
-// import 'core-js/es6/map';
-// import 'core-js/es6/weak-map';
-// import 'core-js/es6/set';
-
+import 'core-js/es6/array';
+import 'core-js/es6/date';
+import 'core-js/es6/function';
+import 'core-js/es6/map';
+import 'core-js/es6/math';
+import 'core-js/es6/number';
+import 'core-js/es6/object';
+import 'core-js/es6/parse-float';
+import 'core-js/es6/parse-int';
+import 'core-js/es6/regexp';
+import 'core-js/es6/set';
+import 'core-js/es6/string';
+import 'core-js/es6/symbol';
+import 'core-js/es6/weak-map';
 /** IE10 and IE11 requires the following for NgClass support on SVG elements */
 // import 'classlist.js';  // Run `npm install --save classlist.js`.
-
 /** IE10 and IE11 requires the following for the Reflect API. */
 // import 'core-js/es6/reflect';
-
-
 /** Evergreen browsers require these. **/
-// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
+// Used for reflect-metadata in JIT. If you use AOT (and only Angular
+// decorators), you can remove.
 import 'core-js/es7/reflect';
-
-
+/***************************************************************************************************
+ * APPLICATION IMPORTS
+ */
+import 'intl';
+import 'intl/locale-data/jsonp/en';
 /**
  * Required to support Web Animations `@angular/platform-browser/animations`.
  * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
  **/
 // import 'web-animations-js';  // Run `npm install --save web-animations-js`.
-
-
-
 /***************************************************************************************************
  * Zone JS is required by default for Angular itself.
  */
-import 'zone.js/dist/zone';  // Included with Angular CLI.
-
-
-
-/***************************************************************************************************
- * APPLICATION IMPORTS
- */
+import 'zone.js/dist/zone'; // Included with Angular CLI.
diff --git a/public/src/stories/diagram.stories.ts b/public/src/stories/diagram.stories.ts
index 00dd922..682fa6d 100644
--- a/public/src/stories/diagram.stories.ts
+++ b/public/src/stories/diagram.stories.ts
@@ -13,10 +13,24 @@
   },
   props: {
     list: array('list', [
-      { source: 'node1dsvsdsvd', target: 'node2' },
-      { source: 'node3', target: 'node4' },
-      { source: 'node5', target: 'nodedsvsds6' },
-      { source: 'node7', target: 'node8' }
+      {
+        name1: 'node1dsvsdsvd',
+        name2: 'node2',
+        p1: 'Stream_publish_0',
+        p2: 'capability'
+      },
+      {
+        name1: 'node33',
+        name2: 'node2555',
+        p1: 'requirement2',
+        p2: 'capability11'
+      },
+      {
+        name1: 'namber4',
+        name2: 'namber3',
+        p1: 'requirement3',
+        p2: 'capability4'
+      }
     ])
   }
 }));
diff --git a/public/src/styles.css b/public/src/styles.css
index 4b1d433..a56199a 100644
--- a/public/src/styles.css
+++ b/public/src/styles.css
@@ -1,8 +1,13 @@
 /* You can add global styles to this file, and also import other style files */
-@import '@angular/material/prebuilt-themes/indigo-pink.css';
 
+@import '@angular/material/prebuilt-themes/indigo-pink.css';
 @font-face {
   font-family: 'Open Sans';
+  src: url('./assets/fonts/OpenSans-Regular.ttf') format('ttf');
+}
+
+@font-face {
+  font-family: 'Open Sans-SemiBold';
   src: url('./assets/fonts/OpenSans-SemiBold.ttf') format('ttf');
 }
 
@@ -19,28 +24,31 @@
 app-root,
 app-home {
   height: 100%;
-  font-family: 'Open Sans', sans-serif;
+  font-family: 'Open Sans', sans-serif !important;
   font-size: 13px;
   /* height: 100vh; */
 }
 
+select,
+input,
+textarea {
+  font-family: 'Open Sans', sans-serif !important;
+}
+
 div,
 span {
   font-weight: 400;
 }
 
-div .field-label,
-span .field-label,
-div .field-label > span {
-  font-weight: 600;
-}
-
 /* form input validation border */
-textarea.ng-touched.ng-invalid:not(form),input.ng-touched.ng-invalid:not(form) {
+
+textarea.ng-touched.ng-invalid:not(form),
+input.ng-touched.ng-invalid:not(form) {
   border: 1px solid #cf2a2a !important;
 }
 
 /** reset button **/
+
 .mat-fab.mat-primary,
 .mat-mini-fab.mat-primary,
 .mat-raised-button.mat-primary {
@@ -60,7 +68,13 @@
   box-shadow: none !important;
 }
 
+.mat-raised-button.mat-primary[disabled] {
+  background-color: #979797;
+  color: white;
+}
+
 /* Astrix required */
+
 .required::before {
   content: '*';
   color: red;
@@ -68,9 +82,11 @@
 }
 
 /** overide dialog **/
-.ui-dialog {
+
+/* .ui-dialog {
   border-top: solid 6px #cf2a2a;
-}
+} */
+
 .ui-dialog-titlebar {
   background: white;
 }
diff --git a/public/yarn.lock b/public/yarn.lock
index df0e3b2..c6209bd 100644
--- a/public/yarn.lock
+++ b/public/yarn.lock
@@ -39,9 +39,9 @@
   dependencies:
     tslib "^1.7.1"
 
-"@angular/cli@^1.7.3":
-  version "1.7.3"
-  resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-1.7.3.tgz#ac917b69240bb1b340421e9f985135890e0d53b4"
+"@angular/cli@^1.7.4":
+  version "1.7.4"
+  resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-1.7.4.tgz#b6c31b5fc6f8ea07e55b1b01a26422f5358a4ea6"
   dependencies:
     "@angular-devkit/build-optimizer" "0.3.2"
     "@angular-devkit/core" "0.3.2"
@@ -519,6 +519,10 @@
     react-treebeard "^2.1.0"
     redux "^3.7.2"
 
+"@swimlane/ngx-datatable@^13.0.1":
+  version "13.0.1"
+  resolved "https://registry.yarnpkg.com/@swimlane/ngx-datatable/-/ngx-datatable-13.0.1.tgz#6e949e19130b2054e2715d30d158751c4fbaa502"
+
 "@types/blob-util@1.3.3":
   version "1.3.3"
   resolved "https://registry.yarnpkg.com/@types/blob-util/-/blob-util-1.3.3.tgz#adba644ae34f88e1dd9a5864c66ad651caaf628a"
@@ -764,13 +768,13 @@
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
 
-angular-tree-component@^7.0.1:
-  version "7.0.1"
-  resolved "https://registry.yarnpkg.com/angular-tree-component/-/angular-tree-component-7.0.1.tgz#fc8d0e72d8c34b87131a3ba2bd32ad20945689ac"
+angular-tree-component@^7.1.0:
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/angular-tree-component/-/angular-tree-component-7.1.0.tgz#53674ea944f7147647c7e48931f5fad66237a632"
   dependencies:
-    lodash "4.17.4"
-    mobx ">=3"
-    mobx-angular ">=1"
+    lodash "^4.17.5"
+    mobx "^3.6.2"
+    mobx-angular "2.1.1"
 
 angular2-template-loader@^0.6.2:
   version "0.6.2"
@@ -846,6 +850,10 @@
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
 
+archy@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
+
 are-we-there-yet@~1.1.2:
   version "1.1.4"
   resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
@@ -2270,6 +2278,10 @@
   version "0.2.13"
   resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
 
+buffer-from@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04"
+
 buffer-indexof@^1.0.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
@@ -2380,6 +2392,14 @@
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7"
 
+caching-transform@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1"
+  dependencies:
+    md5-hex "^1.2.0"
+    mkdirp "^0.5.1"
+    write-file-atomic "^1.1.4"
+
 callsite@1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
@@ -2853,6 +2873,15 @@
     readable-stream "^2.2.2"
     typedarray "^0.0.6"
 
+concat-stream@1.6.2:
+  version "1.6.2"
+  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+  dependencies:
+    buffer-from "^1.0.0"
+    inherits "^2.0.3"
+    readable-stream "^2.2.2"
+    typedarray "^0.0.6"
+
 concat-stream@~1.5.0, concat-stream@~1.5.1:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266"
@@ -2911,7 +2940,7 @@
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
 
-convert-source-map@^1.4.0, convert-source-map@^1.5.0:
+convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
 
@@ -3067,6 +3096,13 @@
     lru-cache "^4.0.1"
     which "^1.2.9"
 
+cross-spawn@^4:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
+  dependencies:
+    lru-cache "^4.0.1"
+    which "^1.2.9"
+
 cryptiles@2.x.x:
   version "2.0.5"
   resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
@@ -3235,9 +3271,9 @@
   version "0.2.2"
   resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
 
-cypress@1.4.2:
-  version "1.4.2"
-  resolved "https://registry.yarnpkg.com/cypress/-/cypress-1.4.2.tgz#d957d631617aa87e64a7eae71502f2e175076638"
+cypress@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/cypress/-/cypress-2.1.0.tgz#a8bd7d9b89c38a1e380db83b57d9bba0dbb95ba4"
   dependencies:
     "@cypress/listr-verbose-renderer" "0.4.1"
     "@cypress/xvfb" "1.1.3"
@@ -3315,6 +3351,10 @@
     bindings "~1.2.1"
     nan "^2.0.7"
 
+debug-log@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
+
 debug@*, debug@3.1.0, debug@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
@@ -3864,7 +3904,7 @@
     es6-symbol "~3.1.1"
     event-emitter "~0.3.5"
 
-es6-promise@^4.0.5:
+es6-promise@^4.0.3, es6-promise@^4.0.5:
   version "4.2.4"
   resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29"
 
@@ -4221,6 +4261,15 @@
     mkdirp "0.5.0"
     yauzl "2.4.1"
 
+extract-zip@^1.6.5:
+  version "1.6.7"
+  resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9"
+  dependencies:
+    concat-stream "1.6.2"
+    debug "2.6.9"
+    mkdirp "0.5.1"
+    yauzl "2.4.1"
+
 extsprintf@1.3.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
@@ -4380,6 +4429,14 @@
     statuses "~1.3.1"
     unpipe "~1.0.0"
 
+find-cache-dir@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
+  dependencies:
+    commondir "^1.0.1"
+    mkdirp "^0.5.1"
+    pkg-dir "^1.0.0"
+
 find-cache-dir@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
@@ -4454,6 +4511,13 @@
   version "2.0.5"
   resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
 
+foreground-child@^1.5.3, foreground-child@^1.5.6:
+  version "1.5.6"
+  resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9"
+  dependencies:
+    cross-spawn "^4"
+    signal-exit "^3.0.0"
+
 forever-agent@~0.6.1:
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@@ -4535,6 +4599,14 @@
     path-is-absolute "^1.0.0"
     rimraf "^2.2.8"
 
+fs-extra@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950"
+  dependencies:
+    graceful-fs "^4.1.2"
+    jsonfile "^2.1.0"
+    klaw "^1.0.0"
+
 fs-write-stream-atomic@^1.0.8:
   version "1.0.10"
   resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
@@ -4997,6 +5069,13 @@
     inherits "^2.0.3"
     minimalistic-assert "^1.0.0"
 
+hasha@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1"
+  dependencies:
+    is-stream "^1.0.1"
+    pinkie-promise "^2.0.0"
+
 hawk@3.1.3, hawk@~3.1.3:
   version "3.1.3"
   resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
@@ -5414,6 +5493,10 @@
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
 
+intl@^1.2.5:
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/intl/-/intl-1.2.5.tgz#82244a2190c4e419f8371f5aa34daa3420e2abde"
+
 invariant@^2.2.2:
   version "2.2.2"
   resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
@@ -5802,6 +5885,15 @@
     loader-utils "^1.1.0"
     schema-utils "^0.3.0"
 
+istanbul-instrumenter-loader@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz#9957bd59252b373fae5c52b7b5188e6fde2a0949"
+  dependencies:
+    convert-source-map "^1.5.0"
+    istanbul-lib-instrument "^1.7.3"
+    loader-utils "^1.1.0"
+    schema-utils "^0.3.0"
+
 istanbul-lib-coverage@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da"
@@ -5816,6 +5908,18 @@
   dependencies:
     append-transform "^0.4.0"
 
+istanbul-lib-instrument@^1.10.0, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0:
+  version "1.10.1"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b"
+  dependencies:
+    babel-generator "^6.18.0"
+    babel-template "^6.16.0"
+    babel-traverse "^6.18.0"
+    babel-types "^6.18.0"
+    babylon "^6.18.0"
+    istanbul-lib-coverage "^1.2.0"
+    semver "^5.3.0"
+
 istanbul-lib-instrument@^1.7.3, istanbul-lib-instrument@^1.9.1:
   version "1.9.1"
   resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e"
@@ -5828,18 +5932,6 @@
     istanbul-lib-coverage "^1.1.1"
     semver "^5.3.0"
 
-istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0:
-  version "1.10.1"
-  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b"
-  dependencies:
-    babel-generator "^6.18.0"
-    babel-template "^6.16.0"
-    babel-traverse "^6.18.0"
-    babel-types "^6.18.0"
-    babylon "^6.18.0"
-    istanbul-lib-coverage "^1.2.0"
-    semver "^5.3.0"
-
 istanbul-lib-report@^1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425"
@@ -5849,7 +5941,16 @@
     path-parse "^1.0.5"
     supports-color "^3.1.2"
 
-istanbul-lib-source-maps@^1.2.1:
+istanbul-lib-report@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz#2df12188c0fa77990c0d2176d2d0ba3394188259"
+  dependencies:
+    istanbul-lib-coverage "^1.1.2"
+    mkdirp "^0.5.1"
+    path-parse "^1.0.5"
+    supports-color "^3.1.2"
+
+istanbul-lib-source-maps@^1.2.1, istanbul-lib-source-maps@^1.2.3:
   version "1.2.3"
   resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6"
   dependencies:
@@ -5875,6 +5976,12 @@
   dependencies:
     handlebars "^4.0.3"
 
+istanbul-reports@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.4.0.tgz#3d7b44b912ecbe7652a603662b962120739646a1"
+  dependencies:
+    handlebars "^4.0.3"
+
 jasmine-core@~2.8.0:
   version "2.8.0"
   resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e"
@@ -6485,6 +6592,13 @@
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529"
 
+karma-phantomjs-launcher@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2"
+  dependencies:
+    lodash "^4.0.1"
+    phantomjs-prebuilt "^2.1.7"
+
 karma-source-map-support@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.2.0.tgz#1bf81e7bb4b089627ab352ec4179e117c406a540"
@@ -6524,6 +6638,10 @@
     tmp "0.0.33"
     useragent "^2.1.12"
 
+kew@^0.7.0:
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b"
+
 keycode@^2.1.9:
   version "2.1.9"
   resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.1.9.tgz#964a23c54e4889405b4861a5c9f0480d45141dfa"
@@ -7097,6 +7215,16 @@
   version "1.2.17"
   resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
 
+md5-hex@^1.2.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4"
+  dependencies:
+    md5-o-matic "^0.1.1"
+
+md5-o-matic@^0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3"
+
 md5.js@^1.3.4:
   version "1.3.4"
   resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
@@ -7140,6 +7268,12 @@
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
 
+merge-source-map@^1.0.2:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646"
+  dependencies:
+    source-map "^0.6.1"
+
 merge-stream@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"
@@ -7327,7 +7461,7 @@
   dependencies:
     minimist "0.0.8"
 
-mobx-angular@>=1:
+mobx-angular@2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/mobx-angular/-/mobx-angular-2.1.1.tgz#d5e36539acb200186dd5a1170806b4776b9a8b88"
 
@@ -7347,13 +7481,13 @@
     remotedev "^0.2.7"
     remotedev-utils "^0.1.4"
 
-mobx@>=3:
-  version "3.5.1"
-  resolved "https://registry.yarnpkg.com/mobx/-/mobx-3.5.1.tgz#8e682ec535cf44e04005b9e37e2df66acc975a42"
+mobx@^3.6.2:
+  version "3.6.2"
+  resolved "https://registry.yarnpkg.com/mobx/-/mobx-3.6.2.tgz#fb9f5ff5090539a1ad54e75dc4c098b602693320"
 
-mobx@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/mobx/-/mobx-4.1.0.tgz#e4a9679cdafbe215b20e32ef93a7031845b3f1af"
+mobx@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/mobx/-/mobx-4.2.0.tgz#ee0b0a4f3da2f4776225046ab208ac329a4841d4"
 
 mocha-rp-reporter@^1.0.12:
   version "1.0.12"
@@ -7534,6 +7668,10 @@
   version "1.0.6"
   resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35"
 
+ngx-datatable@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/ngx-datatable/-/ngx-datatable-1.0.3.tgz#9ef9915aa019e9983aa8e3897b61f400f2fd69d5"
+
 ngx-toastr@^8.2.1:
   version "8.2.1"
   resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-8.2.1.tgz#86cffec666a9dadde5f8a37f2a8fe2ab527b3dde"
@@ -7827,6 +7965,38 @@
   version "1.4.3"
   resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c"
 
+nyc@^11.7.1:
+  version "11.7.1"
+  resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.7.1.tgz#7cb0a422e501b88ff2c1634341dec2560299d67b"
+  dependencies:
+    archy "^1.0.0"
+    arrify "^1.0.1"
+    caching-transform "^1.0.0"
+    convert-source-map "^1.5.1"
+    debug-log "^1.0.1"
+    default-require-extensions "^1.0.0"
+    find-cache-dir "^0.1.1"
+    find-up "^2.1.0"
+    foreground-child "^1.5.3"
+    glob "^7.0.6"
+    istanbul-lib-coverage "^1.1.2"
+    istanbul-lib-hook "^1.1.0"
+    istanbul-lib-instrument "^1.10.0"
+    istanbul-lib-report "^1.1.3"
+    istanbul-lib-source-maps "^1.2.3"
+    istanbul-reports "^1.4.0"
+    md5-hex "^1.2.0"
+    merge-source-map "^1.0.2"
+    micromatch "^2.3.11"
+    mkdirp "^0.5.0"
+    resolve-from "^2.0.0"
+    rimraf "^2.5.4"
+    signal-exit "^3.0.1"
+    spawn-wrap "^1.4.2"
+    test-exclude "^4.2.0"
+    yargs "11.1.0"
+    yargs-parser "^8.0.0"
+
 oauth-sign@~0.8.1, oauth-sign@~0.8.2:
   version "0.8.2"
   resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
@@ -8245,6 +8415,20 @@
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
 
+phantomjs-prebuilt@^2.1.7:
+  version "2.1.16"
+  resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz#efd212a4a3966d3647684ea8ba788549be2aefef"
+  dependencies:
+    es6-promise "^4.0.3"
+    extract-zip "^1.6.5"
+    fs-extra "^1.0.0"
+    hasha "^2.2.0"
+    kew "^0.7.0"
+    progress "^1.1.8"
+    request "^2.81.0"
+    request-progress "^2.0.1"
+    which "^1.2.10"
+
 pify@^2.0.0, pify@^2.3.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -8263,6 +8447,12 @@
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
 
+pkg-dir@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
+  dependencies:
+    find-up "^1.0.0"
+
 pkg-dir@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
@@ -8698,7 +8888,7 @@
     speedometer "~0.1.2"
     through2 "~0.2.3"
 
-progress@1.1.8:
+progress@1.1.8, progress@^1.1.8:
   version "1.1.8"
   resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
 
@@ -9438,6 +9628,12 @@
   dependencies:
     throttleit "~0.0.2"
 
+request-progress@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08"
+  dependencies:
+    throttleit "^1.0.0"
+
 request-promise-core@1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6"
@@ -9599,6 +9795,10 @@
     expand-tilde "^2.0.0"
     global-modules "^1.0.0"
 
+resolve-from@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
+
 resolve-from@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
@@ -10023,7 +10223,7 @@
   version "2.2.8"
   resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.8.tgz#033b117d6a2e975804f6f0969dbe7d3d0b355131"
 
-signal-exit@^3.0.0, signal-exit@^3.0.2:
+signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
 
@@ -10053,6 +10253,10 @@
   version "0.0.4"
   resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
 
+slide@^1.1.5:
+  version "1.1.6"
+  resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
+
 smart-buffer@^1.0.13, smart-buffer@^1.0.4:
   version "1.1.15"
   resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16"
@@ -10258,6 +10462,17 @@
   version "0.6.1"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
 
+spawn-wrap@^1.4.2:
+  version "1.4.2"
+  resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c"
+  dependencies:
+    foreground-child "^1.5.6"
+    mkdirp "^0.5.0"
+    os-homedir "^1.0.1"
+    rimraf "^2.6.2"
+    signal-exit "^3.0.2"
+    which "^1.3.0"
+
 spdx-correct@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
@@ -10708,7 +10923,7 @@
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/terminal-banner/-/terminal-banner-1.1.0.tgz#ef81ce7d9d7e541a81d09eb2c0257c3d5463c3ea"
 
-test-exclude@^4.1.1:
+test-exclude@^4.1.1, test-exclude@^4.2.0:
   version "4.2.1"
   resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa"
   dependencies:
@@ -10730,6 +10945,10 @@
   version "0.0.2"
   resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
 
+throttleit@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
+
 through2@^2.0.0:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
@@ -11626,6 +11845,14 @@
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
 
+write-file-atomic@^1.1.4:
+  version "1.3.4"
+  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f"
+  dependencies:
+    graceful-fs "^4.1.11"
+    imurmurhash "^0.1.4"
+    slide "^1.1.5"
+
 write-file-atomic@^2.0.0, write-file-atomic@^2.1.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab"
@@ -11751,7 +11978,7 @@
   dependencies:
     camelcase "^4.1.0"
 
-yargs-parser@^8.1.0:
+yargs-parser@^8.0.0, yargs-parser@^8.1.0:
   version "8.1.0"
   resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950"
   dependencies:
@@ -11763,6 +11990,23 @@
   dependencies:
     camelcase "^4.1.0"
 
+yargs@11.1.0:
+  version "11.1.0"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77"
+  dependencies:
+    cliui "^4.0.0"
+    decamelize "^1.1.1"
+    find-up "^2.1.0"
+    get-caller-file "^1.0.1"
+    os-locale "^2.0.0"
+    require-directory "^2.1.1"
+    require-main-filename "^1.0.1"
+    set-blocking "^2.0.0"
+    string-width "^2.0.0"
+    which-module "^2.0.0"
+    y18n "^3.2.1"
+    yargs-parser "^9.0.2"
+
 yargs@6.6.0:
   version "6.6.0"
   resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
diff --git a/src/main/java/org/onap/sdc/dcae/controller/proxy/DcaeProxy.java b/src/main/java/org/onap/sdc/dcae/controller/proxy/DcaeProxy.java
index 84b6918..4900f27 100644
--- a/src/main/java/org/onap/sdc/dcae/controller/proxy/DcaeProxy.java
+++ b/src/main/java/org/onap/sdc/dcae/controller/proxy/DcaeProxy.java
@@ -43,14 +43,16 @@
             log.error("Unexpected FE request logging error :", e);
         }
         String uri = request.getRequestURI();
-        uri = uri.replace("/dcaeProxy", "");
+		uri = uri.replaceFirst("/dcaed", "/dcae"); // replacing the new FE context (/dcaed) with BE context (/dcae)
+        uri = uri.replace("/dcaeProxy", ""); // removing the proxy from the request
         String query = request.getQueryString();
         StringBuilder url = new StringBuilder();
         url.append(beHostUrl).append(uri);
-        if(null != query)
-            url.append("?").append(query);
+        if(null != query){
+            url.append("?").append(query); // restoring all query params if tsuch exists
+		}
         String urlString = url.toString();
-        log.info("Proxy outgoing request={}", urlString);
+        log.info("New FE Proxy outgoing request={}", urlString);
         return urlString;
     }
 
diff --git a/src/main/webapp/WEB-INF/config/dcae-fe/application.properties b/src/main/webapp/WEB-INF/config/dcae-fe/application.properties
index a018abb..37b5a2d 100644
--- a/src/main/webapp/WEB-INF/config/dcae-fe/application.properties
+++ b/src/main/webapp/WEB-INF/config/dcae-fe/application.properties
@@ -1,3 +1,5 @@
 server.port=8181
-server.context-path=/dcae
+# this is the context path in which the dcae_fe is exposed:
+server.context-path=/dcaed
+# this is the dcae-d be url which the dcaeProxy in the FE is delegating the request to
 beUrl=https://zldcrdm2sdc2abe01.3f1a87.rdm2.tci.att.com:8443
diff --git a/src/test/org/onap/sdc/dcae/controller/proxy/DcaeProxyTest.java b/src/test/org/onap/sdc/dcae/controller/proxy/DcaeProxyTest.java
index 94cb2c0..13b9c78 100644
--- a/src/test/org/onap/sdc/dcae/controller/proxy/DcaeProxyTest.java
+++ b/src/test/org/onap/sdc/dcae/controller/proxy/DcaeProxyTest.java
@@ -19,8 +19,8 @@
 
     @Test
     public void testRewriteUrlWithQueryParams(){
-        String requestUrl = "/dcae/dcaeProxy/someBeApi?%20x=1&y=2";
-        String expectedUrl = BEHOST + "/dcae/someBeApi?%20x=1&y=2";
+        String requestUrl = "/dcaed/dcaeProxy/someBeApi?%20x=1&y=2";
+        String expectedUrl = BEHOST + "/dcaed/someBeApi?%20x=1&y=2";
         when(servletRequest.getRequestURI()).thenReturn(requestUrl);
         String target = proxy.rewriteTarget(servletRequest);
         assertTrue(target.equals(expectedUrl));