diff --git a/xos/synchronizer/steps/roles/sprint_mme_setup/tasks/main.yml b/xos/synchronizer/steps/roles/sprint_mme_setup/tasks/main.yml
new file mode 100644
index 0000000..d5548fe
--- /dev/null
+++ b/xos/synchronizer/steps/roles/sprint_mme_setup/tasks/main.yml
@@ -0,0 +1,18 @@
+---
+- name: Copy templates
+  template:
+    src: "templates/{{ item }}.j2"
+    dest: "{{ source_path }}/{{ item }}"
+  with_items:
+    - vbfd.conf
+    - vbsm_cfg.txt
+
+- name: Run make_certs.sh command
+  shell: "./make_certs.sh mme {{ realm }}"
+  args:
+    chdir: "{{ source_path }}"
+
+- name: Run vb_acc
+  shell: "./vb_acc"
+  args:
+    chdir: "{{ source_path }}"
diff --git a/xos/synchronizer/steps/roles/sprint_mme_setup/templates/vbfd.conf.j2 b/xos/synchronizer/steps/roles/sprint_mme_setup/templates/vbfd.conf.j2
new file mode 100644
index 0000000..a3f4b90
--- /dev/null
+++ b/xos/synchronizer/steps/roles/sprint_mme_setup/templates/vbfd.conf.j2
@@ -0,0 +1,87 @@
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+# -------- Test configuration ---------
+
+# Identity = "<diameter_host>.<diameter_realm>";
+Identity = "{{ identity }}";
+Realm = "{{ realm }}";
+# Port = 3868;
+# SecPort = 3869;
+
+ConnectPeer = "{{ connect_peer }}" { ConnectTo = "{{ s6a_hss_ip }}"; No_TLS; port = {{ hss_port }}; };
+
+# TLS_Cred = "<diameter_host>.cert.pem", "<diameter_host>.key.pem";
+TLS_Cred = "mme.cert.pem",
+	   "mme.key.pem";
+TLS_CA = "cacert.pem";
+
+LoadExtension = "/usr/local/lib/freeDiameter/dict_3gpp2_avps.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_CreditControl.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_base_rfc6733.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_draftload_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_etsi283034_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4004_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4006bis_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4072_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4590_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5447_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5580_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5777_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5778_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc6734_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc6942_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7155_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7683_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7944_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29061_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29128_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29154_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29173_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29212_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29214_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29215_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29217_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29229_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29272_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29273_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29329_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29336_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29337_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29338_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29343_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29344_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29345_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29368_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29468_avps.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_ts32299_avps.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_CxDx.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_Gx.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_NAS.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_Rf.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_Ro.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_Rx.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_S6as6d.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_S6c.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_S6mS6n.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_S6t.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_S9.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_SGd.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_SLh.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_Sd.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_Sh.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_T4.fdx";
+LoadExtension = "/usr/local/lib/freeDiameter/dict_T6aT6bT7.fdx";
+#LoadExtension = "/usr/local/lib/freeDiameter/dict_Tsp.fdx";
diff --git a/xos/synchronizer/steps/roles/sprint_mme_setup/templates/vbsm_cfg.txt.j2 b/xos/synchronizer/steps/roles/sprint_mme_setup/templates/vbsm_cfg.txt.j2
new file mode 100644
index 0000000..1df4b79
--- /dev/null
+++ b/xos/synchronizer/steps/roles/sprint_mme_setup/templates/vbsm_cfg.txt.j2
@@ -0,0 +1,91 @@
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+# Configuration file for MME
+
+#####  NOTE: Please Do NOT change the order of the parameters #####
+
+# EGTP related
+VBSM_EG_DFLT_PORT                2123                     # EGTP Default port
+VBSM_EG_NONDFLT_PORT             2124                     # EGTP Non Default port
+VBSM_EG_S10_NONDFLT_PORT         2125                     # EGTP Non Default
+VBSM_EG_S3_NONDFLT_PORT          2126                     # EGTP Non Default port for S3 interface towards SGSN
+                                                          # port for S10
+VBSM_EG_DFLT_HOST_NAME           "sutlej.ccin.ccpu.com"   # EGTP host name
+
+
+# E-NodeB related
+VBSM_ENB_ADDR_1                  "{{ s1mme_enb_ip }}"      # IP address of eNodeB
+VBSM_ENB_PORT_1                  32767              # eNodeB port
+#VBSM_ENB_ADDR_2                  "172.26.20.180"      # IP address of eNodeB
+#VBSM_ENB_PORT_2                  36422              # eNodeB port
+
+# MME related
+VBSM_MME_IPADDR                  "{{ s1mme_mme_ip }}"    # MME IP address
+VBSM_MME_S1AP_IPADDR             "{{ s1mme_mme_ip }}"    # MME IP address associated with the S1AP interface
+VBSM_MME_EGTP_IPADDR             "{{ s11_mme_ip }}"    # MME IP address associated with the EGTP interface
+VBSM_MME_SCTP_PORT               36412           # MME SCTP port
+
+VBSM_SGW_IPADDR                  "{{ s11_sgw_ip }}"   # SGW IP address
+VBSM_PGW_IPADDR                  "192.168.1.105"    # PDN-GW IP address
+
+VBSM_UE_NUM                      32             # DEC_14_FIX: Changes to support 35 UE's
+VBSM_SCTP_UDP_SERV_TYPE          0              #service type,default 0 SCTP
+
+# Debug mask to be set; each represent
+#different debug masks to be set (1 and 0 to unset)
+#in the form |LVB_DBGMASK_INFO|LVB_DBGMASK_ERROR|LVB_DBGMASK_TRC|LVB_DBGMASK_MEM
+
+VBSM_MME_DBG_MASK                1111
+VBSM_DBG_MASK                    1111
+VBSM_NW_INIATED_DETACH_TIMER     1000
+
+VBSM_MCC_DIG1         2
+VBSM_MCC_DIG2         0
+VBSM_MCC_DIG3         8
+
+VBSM_MNC_DIG1         0
+VBSM_MNC_DIG2         1
+VBSM_MNC_DIG3         -1 
+
+# Target PLMN ID format [ MCC + MNC], + is concatination operator
+# If MNC has two digits, the last charater shall be 'f'
+# Valid Configurations: 11223f, 112345.
+VBSM_TARGET_MME_PLMN_ID          31310f
+VBSM_TARGET_MME_IP_ADDR          "192.25.1.100"
+
+VBSM_T3412                        32
+
+VBSM_SGSN_IP_ADDR                "192.25.1.195"
+
+
+VBSM_SGSN_PLMN_ID        31311f
+
+VBSM_FD_CFG  "vbfd.conf"
+VBSM_HSS_HOST "hss.openair4G.eur"
+VBSM_HSS_REALM "openair4G.eur"
+
+# set VBSM_DISABLE_EPC_DNS 0 - enable DNS,  1 - disable DNS
+VBSM_DISABLE_EPC_DNS 1
+VBSM_REL_CAP 1
+VBSM_MME_NAME "vmme_standalone"
+VBSM_S1C_SCTP_INSTREAMS 10
+VBSM_S1C_SCTP_OUTSTREAMS 10
+VBSM_MAX_ENB  2
+VBSM_NO_OFGUMMEIS 1
+VBSM_MMECODE  1
+VBSM_MMEGRPID 1
+VBSM_NO_OF_TAI 1
+VBSM_TAI_LIST    {{1,2,0,8,0,1,1}}
diff --git a/xos/synchronizer/steps/sync_vmmetenant.py b/xos/synchronizer/steps/sync_vmmetenant.py
index 2a0c617..c642bb8 100644
--- a/xos/synchronizer/steps/sync_vmmetenant.py
+++ b/xos/synchronizer/steps/sync_vmmetenant.py
@@ -37,4 +37,59 @@
     def __init__(self, *args, **kwargs):
         super(SyncVMMETenant, self).__init__(*args, **kwargs)
 
+    def get_extra_attributes(self, o):
+        fields = {}
 
+        fields['s6a_hss_ip']   = self.get_ip_address_from_peer_service_instance('s6a_network', 'VHSSTenant', o, 's6a_hss_ip')
+        fields['s1mme_enb_ip'] = o.enodeb_ip_addr
+        fields['s1mme_mme_ip'] = self.get_my_ip_address(o, 'flat_network_s1mme', 's1mme_mme_ip')
+        fields['s11_mme_ip']   = self.get_my_ip_address(o, 's11_network', 's11_mme_ip')
+        fields['s11_sgw_ip']   = self.get_ip_address_from_peer_service_instance('s11_network', 'VSPGWCTenant', o, 's11_sgw_ip')
+
+        return fields
+
+    def get_my_ip_address(self, o, network_name, parameter=None):
+        return self.get_ip_address_from_peer_service_instance_instance(network_name, o, o, parameter)
+
+    def get_ip_address_from_peer_service_instance(self, network_name, sitype, o, parameter=None):
+        peer_si = self.get_peer_serviceinstance_of_type(sitype, o)
+        return self.get_ip_address_from_peer_service_instance_instance(network_name, peer_si, o, parameter)
+
+    def get_ip_address_from_peer_service_instance_instance(self, network_name, peer_si, o, parameter=None):
+        try:
+            net_id = self.get_network_id(network_name)
+            ins_id = peer_si.leaf_model.instance_id
+            ip_address = Port.objects.get(
+                network_id=net_id, instance_id=ins_id).ip
+        except Exception:
+            self.log.error("Failed to fetch parameter",
+                           parameter=parameter,
+                           network_name=network_name)
+            self.defer_sync(o, "Waiting for parameters to become available")
+
+        return ip_address
+
+    def get_peer_serviceinstance_of_type(self, sitype, o):
+        prov_link_set = ServiceInstanceLink.objects.filter(
+            subscriber_service_instance_id=o.id)
+
+        try:
+            peer_service = next(
+                p.provider_service_instance for p in prov_link_set if p.provider_service_instance.leaf_model_name == sitype)
+        except StopIteration:
+            sub_link_set = ServiceInstanceLink.objects.filter(
+                provider_service_instance_id=o.id)
+            try:
+                peer_service = next(
+                    s.subscriber_service_instance for s in sub_link_set if s.subscriber_service_instance.leaf_model_name == sitype)
+            except StopIteration:
+                self.log.error(
+                    'Could not find service type in service graph', service_type=sitype, object=o)
+                raise ServiceGraphException(
+                    "Synchronization failed due to incomplete service graph")
+
+        return peer_service
+
+    # To get each network id
+    def get_network_id(self, network_name):
+        return Network.objects.get(name=network_name).id
\ No newline at end of file
diff --git a/xos/synchronizer/steps/vmmetenant_playbook.yaml b/xos/synchronizer/steps/vmmetenant_playbook.yaml
index 05c13c1..5d90590 100644
--- a/xos/synchronizer/steps/vmmetenant_playbook.yaml
+++ b/xos/synchronizer/steps/vmmetenant_playbook.yaml
@@ -13,11 +13,21 @@
 # limitations under the License.
 
 ---
-- hosts: {{ instance_name }} 
-  gather_facts: False 
-  connection: ssh 
-  user: ubuntu 
-  sudo: yes 
-  tasks: 
+- hosts: {{ instance_name }}
+  gather_facts: False
+  connection: ssh
+  remote_user: ubuntu
+  become: yes
   vars:
- 
+    - source_path: /home/c3po/mme
+    - identity: "mme.localdomain"
+    - realm: "localdomain"
+    - connect_peer: "hss.openair4G.eur"
+    - hss_port: 3868
+    - s6a_hss_ip: {{ s6a_hss_ip }}
+    - s1mme_enb_ip: {{ s1mme_enb_ip }}
+    - s1mme_mme_ip: {{ s1mme_mme_ip }}
+    - s11_mme_ip: {{ s11_mme_ip }}
+    - s11_sgw_ip: {{ s11_sgw_ip }}
+  roles:
+    - sprint_mme_setup
