diff --git a/planetstack/model_policies/model_policy_Slice.py b/planetstack/model_policies/model_policy_Slice.py
index 6fd968c..493975f 100644
--- a/planetstack/model_policies/model_policy_Slice.py
+++ b/planetstack/model_policies/model_policy_Slice.py
@@ -1,6 +1,6 @@
 
 def handle(slice):
-	from core.models import SiteDeployments,SliceDeployments,Deployment
+	from core.models import SiteDeployments,SliceDeployments,Deployment,Network,NetworkSlice,NetworkTemplate
 	from collections import defaultdict
 	site_deployments = SiteDeployments.objects.all()
 	site_deploy_lookup = defaultdict(list)
@@ -22,3 +22,46 @@
 			sd = SliceDeployments(slice=slice, deployment=expected_deployment)
 			sd.save()
 
+	# make sure slice has at least 1 public and 1 private networkd
+	public_net = None
+	private_net = None
+	networks = Network.objects.filter(owner=slice)
+	for network in networks:
+		if network.template.name == 'Public dedicated IPv4':
+			public_net = network
+		elif network.template.name == 'Private':
+			private_net = network 
+	if not public_net:
+		public_net = Network(
+          	name = slice.name+'-public',
+          	template = NetworkTemplate.objects.get(name='Public dedicated IPv4'),
+          	owner = slice
+      		)
+		public_net.save()
+        
+	if not private_net:
+        	private_net = Network(
+          	name = slice.name+'-private',
+          	template = NetworkTemplate.objects.get(name='Private'),
+          	owner = slice
+      		)
+      		private_net.save()
+	# create slice networks
+	public_net_slice = None
+	private_net_slice = None
+	net_slices = NetworkSlice.objects.filter(slice=slice, network__in=[public_net,private_net])
+	for net_slice in net_slices:
+		if net_slice.network == public_net:
+			public_net_slice = net_slice 
+		elif net_slice.network == private_net:
+			private_net_slice = net_slice 
+	if not public_net_slice:
+		public_net_slice = NetworkSlice(slice=slice, network=public_net)
+		public_net_slice.save()
+	if not private_net_slice:
+		private_net_slice = NetworkSlice(slice=slice, network=private_net)
+		private_net_slice.save() 		
+                      
+             
+        
+	 
