diff --git a/Multi_Vendor_Policy/UBI/MSK/.meta_Multi_vendor_policy.xml b/Multi_Vendor_Policy/UBI/MSK/.meta_Multi_vendor_policy.xml
new file mode 100755
index 000000000..a045dc91f
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/.meta_Multi_vendor_policy.xml
@@ -0,0 +1,41 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/.meta_Process_Delete_Instance b/Multi_Vendor_Policy/UBI/MSK/.meta_Process_Delete_Instance
new file mode 100755
index 000000000..c15c1bcb6
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/.meta_Process_Delete_Instance
@@ -0,0 +1,27 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/.meta_Process_New_Service b/Multi_Vendor_Policy/UBI/MSK/.meta_Process_New_Service
new file mode 100755
index 000000000..fbac41984
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/.meta_Process_New_Service
@@ -0,0 +1,27 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/.meta_Process_Service_Initiate b/Multi_Vendor_Policy/UBI/MSK/.meta_Process_Service_Initiate
new file mode 100755
index 000000000..a053fbfbf
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/.meta_Process_Service_Initiate
@@ -0,0 +1,27 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/.meta_Process_Update_Devices b/Multi_Vendor_Policy/UBI/MSK/.meta_Process_Update_Devices
new file mode 100755
index 000000000..0f34e774f
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/.meta_Process_Update_Devices
@@ -0,0 +1,27 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Multi_vendor_policy.xml b/Multi_Vendor_Policy/UBI/MSK/Multi_vendor_policy.xml
new file mode 100755
index 000000000..f6df1d481
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Multi_vendor_policy.xml
@@ -0,0 +1,248 @@
+
+
+ true
+
+ service_id
+ 5
+ TRANSACTION
+
+ /images/eclipseIcons/page_obj.gif
+ Multi Vendor Policy
+ 10000
+ 0
+ 5
+ php
+ false
+ false
+ false
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ services
+
+
+
+
+
+
+
+
+
+ TCP
+ UDP
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ interface_object
+
+
+
+
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ethernet
+
+
+
+
+
+
+
+ zone
+
+
+
+
+
+
+
+ zone
+
+
+
+
+
+
+
+ address_ip_netmask
+
+
+
+
+
+
+
+
+
+
+
+
+ ethernet
+
+
+
+
+
+
+
+
+
+
+
+
+ RoutingSubinterface
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ Update Devices
+
+ 0
+
+ false
+ UPDATE
+
+
+
+
+ a
+
+
+
+ 5
+ Delete Instance
+
+ 0
+
+ false
+ DELETE
+
+
+ 5
+ New Service
+
+ 0
+
+ false
+ CREATE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /opt/fmc_repository/Process/UBI/MSK/Process_New_Service/Tasks/
+ Accept Parameters
+
+
+
+ Add Static route in FIrewall
+
+
+
+ Add Firewall Policy
+
+
+ /opt/fmc_repository/Process/UBI/MSK/Process_New_Service/Tasks/
+ Check VLAN
+
+
+ /opt/fmc_repository/Process/UBI/MSK/Process_New_Service/Tasks/
+ Update Router
+
+
+
+ Update Switch
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/.meta_Tasks b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/.meta_Tasks
new file mode 100755
index 000000000..a9e47dadb
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/.meta_Tasks
@@ -0,0 +1,27 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/.meta_Task_Accept_Parameters.php b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/.meta_Task_Accept_Parameters.php
new file mode 100755
index 000000000..a9649f080
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/.meta_Task_Accept_Parameters.php
@@ -0,0 +1,31 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/.meta_Task_Check_VLAN.php b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/.meta_Task_Check_VLAN.php
new file mode 100755
index 000000000..2f587568a
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/.meta_Task_Check_VLAN.php
@@ -0,0 +1,31 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/.meta_Task_Router.php b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/.meta_Task_Router.php
new file mode 100755
index 000000000..1e167aff2
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/.meta_Task_Router.php
@@ -0,0 +1,31 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/.meta_Task_Switch.php b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/.meta_Task_Switch.php
new file mode 100755
index 000000000..7a819c095
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/.meta_Task_Switch.php
@@ -0,0 +1,31 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/Task_Accept_Parameters.php b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/Task_Accept_Parameters.php
new file mode 100755
index 000000000..6cd400b00
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/Task_Accept_Parameters.php
@@ -0,0 +1,42 @@
+
\ No newline at end of file
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/Task_Check_VLAN.php b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/Task_Check_VLAN.php
new file mode 100755
index 000000000..30ad8777c
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/Task_Check_VLAN.php
@@ -0,0 +1,50 @@
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/Task_Router.php b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/Task_Router.php
new file mode 100755
index 000000000..e786cb52a
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/Task_Router.php
@@ -0,0 +1,80 @@
+ $start, 'lastIP' => $end );
+ $ip_list = array();
+ for ($ip = $range['firstIP']; $ip <= $range['lastIP']; $ip++) {
+ array_push($ip_list,long2ip($ip));
+ }
+ return $ip_list;
+}
+//===========================================================
+
+function createNetmaskAddr ($bitcount) {
+
+ $netmask = str_split (str_pad (str_pad ('', $bitcount, '1'), 32, '0'), 8);
+
+ foreach ($netmask as &$element)
+ {
+ $element = bindec ($element);
+ }
+
+ return join ('.', $netmask);
+}
+
+//===========================================================
+$device_id = substr($context['rtr_device'], 3);
+
+$bitcunt = $context['service_subnet_masklen'];
+$cidr = $context['service_subnet_ip']."/".$context['service_subnet_masklen'];
+$ipadrres_list = getIpListFromSubnet($cidr);
+$subnet_mask = createNetmaskAddr($bitcunt);
+
+$micro_service_vars_array = array();
+$micro_service_vars_array['object_id'] = $context['rtr_sw_int'];
+$micro_service_vars_array['ipaddress'] = $ipadrres_list[1];
+$micro_service_vars_array['mask'] = $subnet_mask;
+$micro_service_vars_array['VLAN'] = $context['VLAN'];
+
+
+//logToFile(debug_dump($ipadrres_list,"*************************\n"));
+$managed_entity = array('RoutingSubinterface' => array(""=> $micro_service_vars_array));
+
+
+$response = execute_command_and_verify_response($device_id, CMD_CREATE, $managed_entity , "CREATE RoutingSubinterface");
+$response = json_decode($response, true);
+
+logToFile(debug_dump($response,"*************************\n"));
+
+if($response['wo_status'] !== ENDED)
+{
+ $response = prepare_json_response($response['wo_status'], "Failed to update router", $context, true);
+ echo $response;
+ exit;
+}
+
+$response = prepare_json_response($response['wo_status'], "Successfully updated router", $context, true);
+echo $response;
+?>
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/Task_Switch.php b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/Task_Switch.php
new file mode 100755
index 000000000..301fcbbac
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_New_Service/Tasks/Task_Switch.php
@@ -0,0 +1,53 @@
+ array(""=> $micro_service_vlan));
+ $response = execute_command_and_verify_response($device_id, CMD_CREATE, $managed_entity , "CREATE VLAN");
+ $response = json_decode($response, true);
+
+ logToFile(debug_dump($response,"*************************\n"));
+
+ if($response['wo_status'] !== ENDED)
+ {
+ $response = prepare_json_response($response['wo_status'], "Failed to create switch vlan", $context, true);
+ echo $response;
+ exit;
+ }
+ $micro_service_port['vlanid'] = $context['VLAN'];
+
+
+//===========================create port========================================================
+/*$micro_service_port= array();
+$micro_service_port['object_id'] = $context['lan_port'];
+$micro_service_port['vlanid'] = $context['VLAN'];
+
+$managed_entity = array('Switchport_Access' => array(""=> $micro_service_port));
+$response = execute_command_and_verify_response($device_id, CMD_CREATE, $managed_entity , "CREATE Switchport_Access");
+$response = json_decode($response, true);
+
+logToFile(debug_dump($response,"*************************\n"));
+
+if($response['wo_status'] !== ENDED)
+{
+ $response = prepare_json_response($response['wo_status'], "Failed to create switch port", $context, true);
+ echo $response;
+ exit;
+}*/
+
+$response = prepare_json_response($response['wo_status'], "Successfully updated switch", $context, true);
+echo $response;
+?>
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/.meta_Tasks b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/.meta_Tasks
new file mode 100755
index 000000000..50d80e092
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/.meta_Tasks
@@ -0,0 +1,27 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/.meta_Task_Firewall_Route.php b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/.meta_Task_Firewall_Route.php
new file mode 100755
index 000000000..796f58ce1
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/.meta_Task_Firewall_Route.php
@@ -0,0 +1,31 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/.meta_Task_Firewall_Update.php b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/.meta_Task_Firewall_Update.php
new file mode 100755
index 000000000..7b9bd4c61
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/.meta_Task_Firewall_Update.php
@@ -0,0 +1,31 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/.meta_Task_Router_Update.php b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/.meta_Task_Router_Update.php
new file mode 100755
index 000000000..1d5bb955d
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/.meta_Task_Router_Update.php
@@ -0,0 +1,31 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/.meta_Task_Switch_Update.php b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/.meta_Task_Switch_Update.php
new file mode 100755
index 000000000..9edc3a9bb
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/.meta_Task_Switch_Update.php
@@ -0,0 +1,31 @@
+
+
+
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/Task_Firewall_Route.php b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/Task_Firewall_Route.php
new file mode 100755
index 000000000..2607136c6
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/Task_Firewall_Route.php
@@ -0,0 +1,39 @@
+ array($context['service_id'] => $micro_service_vars_array));
+
+
+$response = execute_command_and_verify_response($device_id, CMD_CREATE, $managed_entity , "CREATE static_route");
+$response = json_decode($response, true);
+
+logToFile(debug_dump($response,"*************************\n"));
+
+if($response['wo_status'] !== ENDED)
+{
+ $response = prepare_json_response($response['wo_status'], "Failed to create static route", $context, true);
+ echo $response;
+ exit;
+}
+
+$response = prepare_json_response($response['wo_status'], "Successfully create static route", $context, true);
+echo $response;
+?>
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/Task_Firewall_Update.php b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/Task_Firewall_Update.php
new file mode 100755
index 000000000..bdb978624
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/Task_Firewall_Update.php
@@ -0,0 +1,82 @@
+$service['service_name']));
+$ms_obj=array('services' => array($service['service_name'] => $obj_arr));
+execute_command_and_verify_response($device_id, CMD_CREATE, $ms_obj , "CREATE Service");
+
+}
+
+//2)
+//Create address object/s for destination address
+//address_ip_netmask
+//object_id
+//address
+//masklen
+$obj_arr=array();
+$obj_arr['address']= $context['service_subnet_ip'];
+$obj_arr['object_id']= $context['service_id'];
+$obj_arr['masklen']= $context['service_subnet_masklen'];
+
+$ms_obj=array('address_ip_netmask' => array($context['service_id'] => $obj_arr));
+execute_command_and_verify_response($device_id, CMD_CREATE, $ms_obj , "CREATE destination Address");
+
+//Source address object has to be created as a prerequisite
+
+//We will use default values for zones for now as the interfaces are not created a new for this usecase
+//Source zone has to be external
+//Destination zone is internal
+//Firewall rulename will be same as service id of the workflow
+
+//================================================================================================================
+$micro_service2 = array();
+
+
+
+$micro_service2['services'] = $srv_arr;
+
+$micro_service2['zone_from'] = $context['source_zone'];
+$micro_service2['src_address'] = $context['source_address'];
+$micro_service2['zone_to'] = $context['destination_zone'];
+$micro_service2['dst_address'] = $context['service_id'];
+$micro_service2['object_id'] = $context['service_id'];
+$micro_service2['action'] = 'allow';
+
+
+$managed_entity2 = array('policy' => array($context['service_id'] => $micro_service2));
+
+$response = execute_command_and_verify_response($device_id, CMD_CREATE, $managed_entity2 , "CREATE policy");
+$response = json_decode($response, true);
+
+logToFile(debug_dump($response,"*************************\n"));
+
+if($response['wo_status'] !== ENDED)
+{
+ $response = prepare_json_response($response['wo_status'], "Failed to create firewall policy", $context, true);
+ echo $response;
+ exit;
+}
+
+$response = prepare_json_response($response['wo_status'], "Successfully created firewall policy", $context, true);
+echo $response;
+?>
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/Task_Router_Update.php b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/Task_Router_Update.php
new file mode 100755
index 000000000..80b1576e3
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/Task_Router_Update.php
@@ -0,0 +1,32 @@
+ array($object_id => $micro_service_vars_array));
+
+
+$response = execute_command_and_verify_response($device_id, CMD_CREATE, $managed_entity , "CREATE VNF_instances");
+$response = json_decode($response, true);
+
+logToFile(debug_dump($response,"*************************\n"));
+
+if($response['wo_status'] !== ENDED)
+{
+ $response = prepare_json_response($response['wo_status'], "Failed to update router", $context, true);
+ echo $response;
+ exit;
+}
+
+$response = prepare_json_response($response['wo_status'], "Successfully updated router", $context, true);
+echo $response;
+?>
+
diff --git a/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/Task_Switch_Update.php b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/Task_Switch_Update.php
new file mode 100755
index 000000000..5fb3bfc8b
--- /dev/null
+++ b/Multi_Vendor_Policy/UBI/MSK/Process_Service_Initiate/Tasks/Task_Switch_Update.php
@@ -0,0 +1,34 @@
+ array(""=> $micro_service_vars_array));
+
+
+$response = execute_command_and_verify_response($device_id, CMD_CREATE, $managed_entity , "CREATE VLAN");
+$response = json_decode($response, true);
+
+logToFile(debug_dump($response,"*************************\n"));
+
+if($response['wo_status'] !== ENDED)
+{
+ $response = prepare_json_response($response['wo_status'], "Failed to update switch", $context, true);
+ echo $response;
+ exit;
+}
+
+$response = prepare_json_response($response['wo_status'], "Successfully updated switch", $context, true);
+echo $response;
+?>
+