diff --git a/cmd/AbstractOLT/AbstractOLT.go b/cmd/AbstractOLT/AbstractOLT.go
index 8527ff6..2148cc9 100644
--- a/cmd/AbstractOLT/AbstractOLT.go
+++ b/cmd/AbstractOLT/AbstractOLT.go
@@ -179,8 +179,10 @@
 	logFile := flag.String("log_file", "AbstractOLT.log", "Name of the LogFile to write to")
 	h := flag.Bool("h", false, "Show usage")
 	help := flag.Bool("help", false, "Show usage")
+	dummy := flag.Bool("dummy", false, "Run in dummy mode where YAML is not sent to XOS")
 
 	flag.Parse()
+	settings.SetDummy(*dummy)
 
 	if *help || *h {
 		var usage = `./AbstractOLT -d [default false] : Runs in Debug mode
@@ -204,6 +206,10 @@
 	}
 	log.SetOutput(file)
 	log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds | log.Lshortfile)
+	if *dummy {
+		fmt.Println("RUNNING IN DUMMY MODE NO YAML WILL BE SENT TO XOS")
+		log.Println("RUNNING IN DUMMY MODE NO YAML WILL BE SENT TO XOS")
+	}
 	log.Printf("Setting Debug to %t\n", settings.GetDebug())
 	if settings.GetDebug() {
 		log.Println("Startup Params: debug:", *debugPtr, " Authentication:", *useAuthentication, " SSL:", *useSsl, "Cert Directory", *certDirectory,
diff --git a/internal/pkg/settings/Settings.go b/internal/pkg/settings/Settings.go
index f1f7f72..af61a28 100644
--- a/internal/pkg/settings/Settings.go
+++ b/internal/pkg/settings/Settings.go
@@ -17,6 +17,7 @@
 package settings
 
 var debug = false
+var dummy = false
 
 /*
 SetDebug - sets debug setting
@@ -31,3 +32,17 @@
 func GetDebug() bool {
 	return debug
 }
+
+/*
+SetDummy sets dummy mode
+*/
+func SetDummy(dummyMode bool) {
+	dummy = dummyMode
+}
+
+/*
+GetDummy - returns the current value of dummy
+*/
+func GetDummy() bool {
+	return dummy
+}
diff --git a/models/physical/chassis.go b/models/physical/chassis.go
index 4e0c4da..5fb9a94 100644
--- a/models/physical/chassis.go
+++ b/models/physical/chassis.go
@@ -18,10 +18,12 @@
 
 import (
 	"fmt"
+	"log"
 	"net"
 	"net/http"
 	"strings"
 
+	"gerrit.opencord.org/abstract-olt/internal/pkg/settings"
 	"gerrit.opencord.org/abstract-olt/models/tosca"
 )
 
@@ -57,7 +59,11 @@
 	webServerPort := olt.GetAddress().Port
 	oltStruct := tosca.NewOltProvision(chassis.CLLI, olt.GetHostname(), "openolt", ipString, webServerPort)
 	yaml, _ := oltStruct.ToYaml()
-	fmt.Printf("yaml:%s\n", yaml)
+	if settings.GetDummy() {
+		log.Printf("yaml:%s\n", yaml)
+		log.Println("YAML IS NOT BEING SET TO XOS")
+		return
+	}
 	client := &http.Client{}
 	requestList := fmt.Sprintf("http://%s:%d/run", chassis.VCoreAddress.IP.String(), chassis.VCoreAddress.Port)
 	req, err := http.NewRequest("POST", requestList, strings.NewReader(yaml))
@@ -81,7 +87,11 @@
 	ontStruct := tosca.NewOntProvision(ont.SerialNumber, slot.Address.IP, ponPort.Number)
 	yaml, _ := ontStruct.ToYaml()
 
-	fmt.Printf("yaml:%s\n", yaml)
+	if settings.GetDummy() {
+		log.Printf("yaml:%s\n", yaml)
+		log.Println("YAML IS NOT BEING SET TO XOS")
+		return
+	}
 	client := &http.Client{}
 	requestList := fmt.Sprintf("http://%s:%d/run", chassis.VCoreAddress.IP.String(), chassis.VCoreAddress.Port)
 	req, err := http.NewRequest("POST", requestList, strings.NewReader(yaml))
