diff --git a/.gitignore b/.gitignore
index bc4b632271943f06318827d23e9d53ce86816a52..cb721c0bf03bdc9112bac0162eadfc60a5f01f0a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@ clab-gosdn*/
 
 # non vimmers
 .vscode/
+.idea/
 
 # MacOS
 .DS_Store
diff --git a/controller/controller.go b/controller/controller.go
index 2798cf80eb21bf2a80357707270f188144724e68..965540a6262f1fbfd550f2c855db880f0688b656 100644
--- a/controller/controller.go
+++ b/controller/controller.go
@@ -291,13 +291,22 @@ func ensureDefaultUserExists() error {
 	if err != nil {
 		log.Info(err)
 	}
-
 	if adminUser == nil {
-		// Generate a password that is 16 characters long with 3 digits, 0 symbols,
-		// allowing upper and lower case letters, disallowing repeat characters.
-		generatedPassword, err := password.Generate(16, 3, 0, true, false)
-		if err != nil {
-			log.Fatal(err)
+		// Getting the password from the environment variable which is set in gosdn.clab.yaml.
+		var preDefinedPassword = os.Getenv("GOSDN_ADMIN_PASSWORD")
+		var usedPassword string
+
+		// If environment variable is set and password is not 0, the password from the environment variable will be used.
+		if len(preDefinedPassword) == 0 {
+			// Generate a password that is 16 characters long with 3 digits, 0 symbols,
+			// allowing upper and lower case letters, disallowing repeat characters.
+			generatedPassword, err := password.Generate(16, 3, 0, true, false)
+			if err != nil {
+				log.Fatal(err)
+			}
+			usedPassword = generatedPassword
+		} else {
+			usedPassword = preDefinedPassword
 		}
 
 		salt, err := password.Generate(16, 3, 0, true, false)
@@ -305,14 +314,14 @@ func ensureDefaultUserExists() error {
 			log.Fatal(err)
 		}
 
-		hashedPassword := base64.RawStdEncoding.EncodeToString(argon2.IDKey([]byte(generatedPassword), []byte(salt), 1, 64*1024, 4, 32))
+		hashedPassword := base64.RawStdEncoding.EncodeToString(argon2.IDKey([]byte(usedPassword), []byte(salt), 1, 64*1024, 4, 32))
 
 		err = c.userService.Add(rbacImpl.NewUser(uuid.New(), defaultUserName, map[string]string{config.BasePndUUID.String(): "admin"}, string(hashedPassword), "", salt, conflict.Metadata{}))
 		if err != nil {
 			return err
 		}
 
-		fmt.Printf("########\n Generated admin password: %s\n########\n", generatedPassword)
+		fmt.Printf("########\n Generated admin password: %s\n########\n", usedPassword)
 	}
 
 	return nil
diff --git a/dev_env_data/clab/gosdn.clab.yaml b/dev_env_data/clab/gosdn.clab.yaml
index 7f7d771f5916e02af194de0c72aa4a46a475eb11..991c217e2c934e7ec621c094e1043a2ba8c070ce 100644
--- a/dev_env_data/clab/gosdn.clab.yaml
+++ b/dev_env_data/clab/gosdn.clab.yaml
@@ -42,6 +42,8 @@ topology:
       cmd:
         --config /gosdn/configs/containerlab-gosdn.toml
       mgmt_ipv4: 172.100.0.5
+      env:
+        GOSDN_ADMIN_PASSWORD: TestPassword
 
     gnmi-target:
       kind: linux
diff --git a/models/YangModels b/models/YangModels
index 1f247060d80be7d7f368135dcdba9a939d24e4c9..f978661713bcc520a6fb0c7ad44a25b6abd6c57d 160000
--- a/models/YangModels
+++ b/models/YangModels
@@ -1 +1 @@
-Subproject commit 1f247060d80be7d7f368135dcdba9a939d24e4c9
+Subproject commit f978661713bcc520a6fb0c7ad44a25b6abd6c57d
diff --git a/models/openconfig b/models/openconfig
index f04dff4e782f9795da6e06323353c44000853a07..d9701d1fa0f50dfb56818f5b440d1ef922051108 160000
--- a/models/openconfig
+++ b/models/openconfig
@@ -1 +1 @@
-Subproject commit f04dff4e782f9795da6e06323353c44000853a07
+Subproject commit d9701d1fa0f50dfb56818f5b440d1ef922051108