diff --git a/xos/api/service/progran.py b/xos/api/service/progran.py
new file mode 100644
index 0000000..9e2849d
--- /dev/null
+++ b/xos/api/service/progran.py
@@ -0,0 +1,83 @@
+from rest_framework.decorators import api_view
+from rest_framework.response import Response
+from rest_framework.reverse import reverse
+from rest_framework import serializers
+from rest_framework import generics
+from rest_framework import status
+from core.models import *
+from django.forms import widgets
+from services.progran.models import *
+from xos.apibase import XOSListCreateAPIView, XOSRetrieveUpdateDestroyAPIView, XOSPermissionDenied
+from api.xosapi_helpers import PlusModelSerializer, XOSViewSet, ReadOnlyField
+import json
+
+BASE_NAME = 'progran'
+
+
+class VProgranProfileSerializer(PlusModelSerializer):
+    id = ReadOnlyField()
+    uiid = serializers.CharField(required=False)
+    profile = serializers.CharField(required=False)
+    dlrate = serializers.CharField(required=False)
+    ulrate = serializers.CharField(required=False)
+
+
+    class Meta:
+        model = VProgranProfile
+        fields = ('uiid','id', 'profile', 'dlrate' , 'ulrate')
+
+
+
+
+class VProgranImsiSerializer(PlusModelSerializer):
+    id = ReadOnlyField()
+    uiid = serializers.CharField(required=False)
+    imsi = serializers.CharField(required=False)
+    profile  = serializers.CharField(required=False)
+
+
+    class Meta:
+        model = VProgranImsi
+        fields = ('uiid','id', 'imsi', "profile")
+
+
+class ProgranProfileViewSet(XOSViewSet):
+    base_name = "progran"
+    method_name = "profile"
+    method_kind = "viewset"
+    queryset = VProgranProfile.objects.all()
+    serializer_class = VProgranProfileSerializer
+
+    @classmethod
+    def get_urlpatterns(self, api_path="^"):
+        patterns = super(ProgranProfileViewSet, self).get_urlpatterns(api_path=api_path)
+
+        return patterns
+
+    def list(self, request):
+        object_list = self.filter_queryset(self.get_queryset())
+
+        serializer = self.get_serializer(object_list, many=True)
+
+        return Response(serializer.data)
+
+
+class ProgranImsiViewSet(XOSViewSet):
+    base_name = "progran"
+    method_name = "imsi"
+    method_kind = "viewset"
+    queryset = VProgranImsi.objects.all()
+    serializer_class = VProgranImsiSerializer
+
+    @classmethod
+    def get_urlpatterns(self, api_path="^"):
+        patterns = super(ProgranImsiViewSet, self).get_urlpatterns(api_path=api_path)
+
+        return patterns
+
+    def list(self, request):
+        object_list = self.filter_queryset(self.get_queryset())
+
+        serializer = self.get_serializer(object_list, many=True)
+
+        return Response(serializer.data)
\ No newline at end of file
diff --git a/xos/models.py b/xos/models.py
new file mode 100644
index 0000000..de98a6d
--- /dev/null
+++ b/xos/models.py
@@ -0,0 +1,91 @@
+from django.db import models
+from core.models import Service, PlCoreBase, Slice, Instance, Tenant, TenantWithContainer, Node, Image, User, Flavor, Subscriber, NetworkParameter, NetworkParameterType, Port, AddressPool
+from core.models.plcorebase import StrippedCharField
+import os
+from django.db import models, transaction
+from django.forms.models import model_to_dict
+from django.db.models import Q
+from operator import itemgetter, attrgetter, methodcaller
+from core.models import Tag
+from core.models.service import LeastLoadedNodeScheduler
+import traceback
+from xos.exceptions import *
+from xos.config import Config
+
+
+class ConfigurationError(Exception):
+    pass
+
+
+PROGRAN_KIND = "Progran"
+APP_LABEL = "progran"
+
+
+
+class VProgranService(Service):
+    KIND = PROGRAN_KIND
+
+    class Meta:
+        app_label = APP_LABEL
+        verbose_name = "Progran Service"
+        proxy = True
+
+    default_attributes = {
+        "rest_hostname": "10.6.0.1",
+        "rest_port": "8183",
+        "rest_user": "onos",
+        "rest_pass": "rocks"
+    }
+
+    @property
+    def rest_hostname(self):
+        return self.get_attribute("rest_hostname", self.default_attributes["rest_hostname"])
+
+    @rest_hostname.setter
+    def rest_hostname(self, value):
+        self.set_attribute("rest_hostname", value)
+
+    @property
+    def rest_port(self):
+        return self.get_attribute("rest_port", self.default_attributes["rest_port"])
+
+    @rest_port.setter
+    def rest_port(self, value):
+        self.set_attribute("rest_port", value)
+
+    @property
+    def rest_user(self):
+        return self.get_attribute("rest_user", self.default_attributes["rest_user"])
+
+    @rest_user.setter
+    def rest_user(self, value):
+        self.set_attribute("rest_user", value)
+
+    @property
+    def rest_pass(self):
+        return self.get_attribute("rest_pass", self.default_attributes["rest_pass"])
+
+
+
+
+class VProgranImsi(PlCoreBase):
+    class Meta:
+        app_label = APP_LABEL
+        verbose_name = "vProgran Imsi"
+
+    uiid = models.IntegerField( help_text="uiid ", null=False, blank=False)
+    imsi = models.CharField(max_length=20, help_text="imsi ", null=False, blank=False)
+    profile = models.CharField(max_length=20, help_text="profile name", null=True, blank=True)
+
+
+class VProgranProfile(PlCoreBase):
+
+    class Meta:
+        app_label = APP_LABEL
+        verbose_name = "vProgran Profile"
+
+    uiid = models.IntegerField( help_text="uiid ", null=False, blank=False)
+    profile = models.CharField(max_length=20, help_text="profile name", null=False, blank=False)
+    dlrate = models.IntegerField( help_text="device download rate", null=False, blank=False)
+    ulrate = models.IntegerField( help_text="device upload rate", null=False, blank=False )
+
diff --git a/xos/progran-onboard.yaml b/xos/progran-onboard.yaml
new file mode 100644
index 0000000..64cc807
--- /dev/null
+++ b/xos/progran-onboard.yaml
@@ -0,0 +1,22 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Onboard the Progran Service
+
+imports:
+   - custom_types/xos.yaml
+
+topology_template:
+  node_templates:
+    servicecontroller#progran:
+      type: tosca.nodes.ServiceController
+      properties:
+          base_url: file:///opt/xos_services/progran/xos/
+          # The following will concatenate with base_url automatically, if
+          # base_url is non-null.
+          models: models.py
+          #admin: admin.py
+          #tosca_custom_types: progran.yaml
+          #tosca_resource: tosca/resources/progranservice.py
+          rest_service: api/service/progran.py
+          synchronizer: synchronizer/manifest
+          synchronizer_run: progran-synchronizer.py
diff --git a/xos/progran.yaml b/xos/progran.yaml
new file mode 100644
index 0000000..5c01754
--- /dev/null
+++ b/xos/progran.yaml
@@ -0,0 +1,273 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+# compile this with "m4 vrouter.m4 > vrouter.yaml"
+
+# include macros
+# Note: Tosca derived_from isn't working the way I think it should, it's not
+#    inheriting from the parent template. Until we get that figured out, use
+#    m4 macros do our inheritance
+
+
+# Service
+
+
+# Subscriber
+
+
+
+
+# end m4 macros
+
+
+
+node_types:
+
+    tosca.nodes.ProgranService:
+        derived_from: tosca.nodes.Root
+        description: >
+            CORD: The Progran Service.
+        capabilities:
+            scalable:
+                type: tosca.capabilities.Scalable
+            service:
+                type: tosca.capabilities.xos.Service
+        properties:
+            no-delete:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to delete this object
+            no-create:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to create this object
+            no-update:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to update this object
+            replaces:
+                type: string
+                required: false
+                descrption: Replaces/renames this object
+            kind:
+                type: string
+                default: generic
+                description: Type of service.
+            view_url:
+                type: string
+                required: false
+                description: URL to follow when icon is clicked in the Service Directory.
+            icon_url:
+                type: string
+                required: false
+                description: ICON to display in the Service Directory.
+            enabled:
+                type: boolean
+                default: true
+            published:
+                type: boolean
+                default: true
+                description: If True then display this Service in the Service Directory.
+            public_key:
+                type: string
+                required: false
+                description: Public key to install into Instances to allows Services to SSH into them.
+            private_key_fn:
+                type: string
+                required: false
+                description: Location of private key file
+            versionNumber:
+                type: string
+                required: false
+                description: Version number of Service.
+            rest_hostname:
+                type: string
+                required: false
+            rest_port:
+                type: string
+                required: false
+            rest_user:
+                type: string
+                required: false
+            rest_pass:
+                type: string
+                required: false
+
+    tosca.nodes.ProgranDevice:
+        derived_from: tosca.nodes.Root
+        description: >
+            CORD: The Progran Device.
+        capabilities:
+            scalable:
+                type: tosca.capabilities.Scalable
+            service:
+                type: tosca.capabilities.xos.Service
+        properties:
+            no-delete:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to delete this object
+            no-create:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to create this object
+            no-update:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to update this object
+            replaces:
+                type: string
+                required: false
+                descrption: Replaces/renames this object
+            openflow_id:
+                type: string
+                required: true
+            config_key:
+                type: string
+                required: false
+            driver:
+                type: string
+                required: true
+
+    tosca.nodes.VRouterPort:
+        derived_from: tosca.nodes.Root
+        description: >
+            CORD: The vRouter Port.
+        capabilities:
+            scalable:
+                type: tosca.capabilities.Scalable
+            service:
+                type: tosca.capabilities.xos.Service
+        properties:
+            no-delete:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to delete this object
+            no-create:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to create this object
+            no-update:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to update this object
+            replaces:
+                type: string
+                required: false
+                descrption: Replaces/renames this object
+            openflow_id:
+                type: string
+                required: true
+
+    tosca.nodes.VRouterInterface:
+        derived_from: tosca.nodes.Root
+        description: >
+            CORD: The vRouter Interface.
+        capabilities:
+            scalable:
+                type: tosca.capabilities.Scalable
+            service:
+                type: tosca.capabilities.xos.Service
+        properties:
+            no-delete:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to delete this object
+            no-create:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to create this object
+            no-update:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to update this object
+            replaces:
+                type: string
+                required: false
+                descrption: Replaces/renames this object
+            name:
+                type: string
+                required: true
+            mac:
+                type: string
+                required: true
+            vlan:
+                type: string
+                required: false
+
+    tosca.nodes.VRouterIp:
+        derived_from: tosca.nodes.Root
+        description: >
+            CORD: The vRouter Ip.
+        capabilities:
+            scalable:
+                type: tosca.capabilities.Scalable
+            service:
+                type: tosca.capabilities.xos.Service
+        properties:
+            no-delete:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to delete this object
+            no-create:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to create this object
+            no-update:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to update this object
+            replaces:
+                type: string
+                required: false
+                descrption: Replaces/renames this object
+            ip:
+                type: string
+                required: true
+
+    tosca.nodes.VRouterApp:
+        derived_from: tosca.nodes.Root
+        description: >
+            CORD: The vRouter ONOS App Config.
+        capabilities:
+            scalable:
+                type: tosca.capabilities.Scalable
+            service:
+                type: tosca.capabilities.xos.Service
+        properties:
+            no-delete:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to delete this object
+            no-create:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to create this object
+            no-update:
+                type: boolean
+                default: false
+                description: Do not allow Tosca to update this object
+            replaces:
+                type: string
+                required: false
+                descrption: Replaces/renames this object
+            name:
+                type: string
+                required: true
+            control_plane_connect_point:
+                type: string
+                required: true
+            ospf_enabled:
+                type: boolean
+                required: true
+
+    tosca.relationships.PortOfDevice:
+            derived_from: tosca.relationships.Root
+            valid_target_types: [ tosca.capabilities.xos.VRouterPort ]
+
+    tosca.relationships.InterfaceOfPort:
+            derived_from: tosca.relationships.Root
+            valid_target_types: [ tosca.capabilities.xos.VRouterInterface ]
+
+    tosca.relationships.IpOfInterface:
+            derived_from: tosca.relationships.Root
+            valid_target_types: [ tosca.capabilities.xos.VRouterIp ]
diff --git a/xos/synchronizer/curl_sample.md b/xos/synchronizer/curl_sample.md
new file mode 100644
index 0000000..d5c59d2
--- /dev/null
+++ b/xos/synchronizer/curl_sample.md
@@ -0,0 +1,30 @@
+# Progran App
+
+
+## Add Profile
+`curl --user onos:rocks -v -H "Accept: application/json" -H "Content-Type: application/json" -X POST --data '{"Name":"mme2","DlSchedType":"RR","UlSchedType":"RR","DlAllocRBRate":0,"UlAllocRBRate":0,"CellIndividualOffset":1,"AdmControl":0,"MMECfg":{"IPAddr":"10.10.2.7","Port":36412},"DlWifiRate":0,"Handover":{"A3Hysteresis":1,"A3TriggerQuantity":0,"A3offset":0,"A5Hysteresis":1,"A5Thresh1Rsrp":80,"A5Thresh1Rsrq":20,"A5Thresh2Rsrp":90,"A5Thresh2Rsrq":20,"A5TriggerQuantity":0},"Start":"","End":"","Status":1}' http://onos-fabric:8183/onos/progran/profile`
+
+
+## Add imsi to profile
+`curl --user onos:rocks -H "Content-Type: application/json" -X POST -d '{"profile":"slice1", "imsi": "1111111"}'  http://onos-fabric:8183/onos/progran/mwc/connect`
+
+## Update profile
+`curl --user onos:rocks -H "Content-Type: application/json" -X POST -d '{"profile":"slice2", "ul": "20","dl":"20"}'  http://onos-fabric:8183/onos/progran/mwc/profile`
+
+## Update Profile
+`curl --user onos:rocks -v -H "Accept: application/json" -H "Content-Type: application/json" -X GET --data ' http://onos-fabric:8183/onos/progran/mwc/list`
+
+
+
+post
+/mwc/profile
+/mwc/connect
+
+get
+/mwc/list
+
+
+curl --user onos:rocks -H "Content-Type: application/json" -X POST -d '{"profile":"slice1", "imsi": "12345678"}'  http://10.1.8.65:8181/onos/progran/mwc/connect
+
+
+curl  -sSL --user onos:rocks  -H "Accept: application/json" -H "Content-Type: application/json" -X POST --data '{"IMSI":"001010000000343"}' http://10.1.8.65:8181/onos/progran/imsi
diff --git a/xos/synchronizer/manifest b/xos/synchronizer/manifest
new file mode 100644
index 0000000..898c164
--- /dev/null
+++ b/xos/synchronizer/manifest
@@ -0,0 +1,7 @@
+manifest
+model_deps
+run.sh
+steps/sync_imsi.py
+steps/sync_profile.py
+progran-synchronizer.py
+progran_config
diff --git a/xos/synchronizer/model_deps b/xos/synchronizer/model_deps
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/xos/synchronizer/model_deps
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/xos/synchronizer/progran-synchronizer.py b/xos/synchronizer/progran-synchronizer.py
new file mode 100644
index 0000000..93dcb72
--- /dev/null
+++ b/xos/synchronizer/progran-synchronizer.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+
+# Runs the standard XOS synchronizer
+
+import importlib
+import os
+import sys
+
+synchronizer_path = os.path.join(os.path.dirname(
+    os.path.realpath(__file__)), "../../synchronizers/base")
+sys.path.append(synchronizer_path)
+mod = importlib.import_module("xos-synchronizer")
+mod.main()
diff --git a/xos/synchronizer/progran_config b/xos/synchronizer/progran_config
new file mode 100644
index 0000000..99d382f
--- /dev/null
+++ b/xos/synchronizer/progran_config
@@ -0,0 +1,23 @@
+# Required by XOS
+[db]
+name=xos
+user=postgres
+password=password
+host=xos_db
+port=5432
+
+# Required by XOS
+[api]
+nova_enabled=True
+
+# Sets options for the synchronizer
+[observer]
+name=progran
+dependency_graph=/opt/xos/synchronizers/progran/model_deps
+steps_dir=/opt/xos/synchronizers/progran/steps
+sys_dir=/opt/xos/synchronizers/progran/sys
+logfile=/var/log/xos_backend.log
+pretend=False
+backoff_disabled=True
+save_ansible_output=True
+proxy_ssh=False
diff --git a/xos/synchronizer/run.sh b/xos/synchronizer/run.sh
new file mode 100644
index 0000000..779c511
--- /dev/null
+++ b/xos/synchronizer/run.sh
@@ -0,0 +1,2 @@
+export XOS_DIR=/opt/xos
+python progran-synchronizer.py  -C $XOS_DIR/synchronizers/progran/progran_config
diff --git a/xos/synchronizer/steps/sync_imsi.py b/xos/synchronizer/steps/sync_imsi.py
new file mode 100644
index 0000000..bf56767
--- /dev/null
+++ b/xos/synchronizer/steps/sync_imsi.py
@@ -0,0 +1,60 @@
+import os
+import sys
+import requests
+import json
+from django.db.models import Q, F
+from services.progran.models import *
+from synchronizers.base.syncstep import SyncStep
+from xos.logger import Logger, logging
+
+# from core.models import Service
+from requests.auth import HTTPBasicAuth
+
+parentdir = os.path.join(os.path.dirname(__file__), "..")
+sys.path.insert(0, parentdir)
+
+logger = Logger(level=logging.INFO)
+
+
+class SyncVImsiApp(SyncStep):
+    provides = [VProgranImsi]
+
+    observes = VProgranImsi
+
+    requested_interval = 0
+
+    def __init__(self, *args, **kwargs):
+        super(SyncVImsiApp, self).__init__(*args, **kwargs)
+
+    def get_onos_progran_addr(self):
+
+        return "http://%s:%s/onos/" % ("10.6.0.1", "8183")
+
+    def get_onos_progran_auth(self):
+
+        return HTTPBasicAuth("onos", "rocks")
+
+    def sync_record(self, app):
+
+        logger.info("Sync'ing Edited vProgran Imsi")
+
+        onos_addr = self.get_onos_progran_addr()
+
+        data = {}
+        data["imsi"] = app.imsi
+        data["profile"] = app.profile
+
+
+        url = onos_addr + "progran/mwc/connect"
+
+        print "POST %s for app %s" % (url, "Progran Imsi")
+
+        auth = self.get_onos_progran_auth()
+        r = requests.post(url, data=json.dumps(data), auth=auth)
+        if (r.status_code != 200):
+            print r
+            raise Exception("Received error from progran app update (%d)" % r.status_code)
+
+    def delete_record(self, app):
+        logger.info("Deletion is not supported yet")
+
diff --git a/xos/synchronizer/steps/sync_profile.py b/xos/synchronizer/steps/sync_profile.py
new file mode 100644
index 0000000..0570d94
--- /dev/null
+++ b/xos/synchronizer/steps/sync_profile.py
@@ -0,0 +1,61 @@
+import os
+import sys
+import requests
+import json
+from django.db.models import Q, F
+from services.progran.models import *
+from synchronizers.base.syncstep import SyncStep
+from xos.logger import Logger, logging
+
+# from core.models import Service
+from requests.auth import HTTPBasicAuth
+
+parentdir = os.path.join(os.path.dirname(__file__), "..")
+sys.path.insert(0, parentdir)
+
+logger = Logger(level=logging.INFO)
+
+
+class SyncVProfileApp(SyncStep):
+    provides = [VProgranProfile]
+
+    observes = VProgranProfile
+
+    requested_interval = 0
+
+    def __init__(self, *args, **kwargs):
+        super(SyncVProfileApp, self).__init__(*args, **kwargs)
+
+    def get_onos_progran_addr(self):
+
+        return "http://%s:%s/onos/" % ("10.6.0.1", "8183")
+
+    def get_onos_progran_auth(self):
+
+        return HTTPBasicAuth("onos", "rocks")
+
+    def sync_record(self, app):
+
+        logger.info("Sync'ing Edited vProgran Profile ")
+
+        onos_addr = self.get_onos_progran_addr()
+
+        data = {}
+        data["profile"] = app.profile
+        data["dlrate"] = app.dlrate
+        data["ulrate"] = app.ulrate
+
+
+        url = onos_addr + "progran/mwc/profile"
+
+        print "POST %s for app %s" % (url, "Progran Imsi")
+
+        auth = self.get_onos_progran_auth()
+        r = requests.post(url, data=json.dumps(data), auth=auth)
+        if (r.status_code != 200):
+            print r
+            raise Exception("Received error from progran app update (%d)" % r.status_code)
+
+    def delete_record(self, app):
+        logger.info("Deletion is not supported yet")
+
diff --git a/xos/tosca/resources/progranservice.py b/xos/tosca/resources/progranservice.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/xos/tosca/resources/progranservice.py
