diff --git a/docker/nmaas-platform.properties.template b/docker/nmaas-platform.properties.template
index 739790823a85ef0c127c4506d4545d57cab63ba0..62e2dcfd8f7f62b8adcde7979bac733ba5b47f39 100644
--- a/docker/nmaas-platform.properties.template
+++ b/docker/nmaas-platform.properties.template
@@ -145,3 +145,14 @@ kubernetes.deployment.smtpServerUsername=${SMTP_LOGIN}
 kubernetes.deployment.smtpServerPassword=${SMTP_PASSWORD}
 kubernetes.deployment.defaultStorageClass=${K8S_DEPLOYMENT_DEFAULT_STORAGE_CLASS}
 kubernetes.deployment.forceDedicatedWorkers=false
+
+# -------------------- #
+# Portal configuration #
+# -------------------- #
+portal.config.maintenance=${PORTAL_MAINTENANCE_FLAG}
+portal.config.ssoLoginAllowed=${PORTAL_SSO_ALLOWED_FLAG}
+portal.config.defaultLanguage=${PORTAL_DEFAULT_LANG}
+portal.config.testInstance=${PORTAL_TEST_INSTANCE_FLAG}
+portal.config.sendAppInstanceFailureEmails=${PORTAL_SEND_FAILURE_NOTIF_FLAG}
+# string - list of emails with ':' as a separator, e.g. admin1@nmaas.eu;admin2@nmaas.eu
+portal.config.appInstanceFailureEmailList=${ADMIN_EMAIL}
diff --git a/src/integrationTest/resources/application.properties b/src/integrationTest/resources/application.properties
index c22d0274a7607b8392fe6c1278f934078bd01a9a..afefec08fba29ccca635a3b0e2a62bf43d703833 100644
--- a/src/integrationTest/resources/application.properties
+++ b/src/integrationTest/resources/application.properties
@@ -142,4 +142,15 @@ kubernetes.deployment.smtpServerHostname=test-postfix
 kubernetes.deployment.smtpServerPort=587
 kubernetes.deployment.smtpServerUsername=
 kubernetes.deployment.smtpServerPassword=
-kubernetes.deployment.defaultStorageClass=storageClass
\ No newline at end of file
+kubernetes.deployment.defaultStorageClass=storageClass
+
+# ------------------------ #
+# Portal configuration #
+# ------------------------ #
+portal.config.maintenance=false
+portal.config.ssoLoginAllowed=false
+portal.config.defaultLanguage=en
+portal.config.testInstance=false
+portal.config.sendAppInstanceFailureEmails=false
+# string - list of emails with ':' as a separator, e.g. admin1@nmaas.eu;admin2@nmaas.eu
+portal.config.appInstanceFailureEmailList=admin@nmaas.eu
\ No newline at end of file
diff --git a/src/main/java/net/geant/nmaas/portal/PortalConfig.java b/src/main/java/net/geant/nmaas/portal/PortalConfig.java
index eb218e201030b4f396cde15af7f35bbcd3d5a3d7..1658b874936f5b9157d4c770bd887198c8790838 100644
--- a/src/main/java/net/geant/nmaas/portal/PortalConfig.java
+++ b/src/main/java/net/geant/nmaas/portal/PortalConfig.java
@@ -1,10 +1,13 @@
 package net.geant.nmaas.portal;
 
+import lombok.extern.log4j.Log4j2;
 import net.geant.nmaas.monitor.MonitorManager;
 import net.geant.nmaas.monitor.ServiceType;
 import net.geant.nmaas.monitor.model.MonitorEntryView;
 import net.geant.nmaas.monitor.scheduling.ScheduleManager;
+import net.geant.nmaas.portal.api.configuration.ConfigurationView;
 import net.geant.nmaas.portal.api.exception.ProcessingException;
+import net.geant.nmaas.portal.exceptions.OnlyOneConfigurationSupportedException;
 import net.geant.nmaas.portal.persistent.entity.Content;
 import net.geant.nmaas.portal.persistent.entity.Domain;
 import net.geant.nmaas.portal.persistent.entity.Role;
@@ -31,6 +34,7 @@ import java.util.Optional;
 
 @Configuration
 @ComponentScan(basePackages={"net.geant.nmaas.portal.service"})
+@Log4j2
 public class PortalConfig {
 
 	private PasswordEncoder passwordEncoder;
@@ -50,15 +54,15 @@ public class PortalConfig {
 			@Autowired
 			private DomainService domains;
 
-			@Autowired
-			private ConfigurationManager configurationManager;
-
 			@Value("${admin.password}")
 			String adminPassword;
 
 			@Value("${admin.email}")
 			String adminEmail;
 
+			@Value("${portal.config.defaultLanguage}")
+			private String defaultLanguage = "en";
+
 			@Override
 			@Transactional
 			public void afterPropertiesSet() {
@@ -75,7 +79,7 @@ public class PortalConfig {
 				if(globalDomain.isPresent()) {
 					User user = new User(username, true, passwordEncoder.encode(password), globalDomain.get(), role, true, true);
 					user.setEmail(email);
-					user.setSelectedLanguage(configurationManager.getConfiguration().getDefaultLanguage());
+					user.setSelectedLanguage(this.defaultLanguage);
 					userRepository.save(user);
 				}
 			}
@@ -153,4 +157,43 @@ public class PortalConfig {
 			}
 		};
 	}
+
+	@Bean
+	public InitializingBean saveDefaultPortalConfiguration() {
+		return new InitializingBean() {
+
+			@Value("${portal.config.maintenance}")
+			private boolean maintenance = false;
+			@Value("${portal.config.ssoLoginAllowed}")
+			private boolean ssoLoginAllowed = false;
+			@Value("${portal.config.defaultLanguage}")
+			private String defaultLanguage = "en";
+			@Value("${portal.config.testInstance}")
+			private boolean testInstance = false;
+			@Value("${portal.config.sendAppInstanceFailureEmails}")
+			private boolean sendAppInstanceFailureEmails = false;
+			@Value("${portal.config.appInstanceFailureEmailList}")
+			private String appInstanceFailureEmailList;
+
+			@Autowired
+			private ConfigurationManager configurationManager;
+
+			@Override
+			public void afterPropertiesSet() throws Exception {
+				ConfigurationView configurationView = ConfigurationView.builder()
+						.maintenance(this.maintenance)
+						.ssoLoginAllowed(this.ssoLoginAllowed)
+						.defaultLanguage(this.defaultLanguage)
+						.testInstance(this.testInstance)
+						.sendAppInstanceFailureEmails(this.sendAppInstanceFailureEmails)
+						.appInstanceFailureEmailList(Arrays.asList(this.appInstanceFailureEmailList.split(";")))
+						.build();
+				try {
+					this.configurationManager.setConfiguration(configurationView);
+				} catch (OnlyOneConfigurationSupportedException e) {
+					log.debug("Portal configuration already exists. Skipping initialization.");
+				}
+			}
+		};
+	}
 }
diff --git a/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationController.java b/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationController.java
index d00a517f1121e0e323a7c38e8b55272425a56165..d641cd5f0433ad7138aec700d6dbad988337fcd2 100644
--- a/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationController.java
@@ -29,8 +29,8 @@ public class ConfigurationController {
     @PostMapping
     @PreAuthorize("hasRole('ROLE_SYSTEM_ADMIN')")
     @ResponseStatus(code = HttpStatus.CREATED)
-    public Long addConfiguration(@RequestBody @Valid ConfigurationView configuration) {
-        return this.configurationManager.addConfiguration(configuration);
+    public Long setConfiguration(@RequestBody @Valid ConfigurationView configuration) {
+        return this.configurationManager.setConfiguration(configuration);
     }
 
     @PutMapping(value="/{id}")
diff --git a/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationView.java b/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationView.java
index 01b0e4939d615599ca61709889bfa1ed34eff55a..5e6bad24fcf7d2efa2d88ce22281b96f192633a4 100644
--- a/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationView.java
+++ b/src/main/java/net/geant/nmaas/portal/api/configuration/ConfigurationView.java
@@ -1,9 +1,6 @@
 package net.geant.nmaas.portal.api.configuration;
 
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
+import lombok.*;
 
 import javax.validation.constraints.Email;
 import java.util.ArrayList;
@@ -13,20 +10,22 @@ import java.util.List;
 @NoArgsConstructor
 @Getter
 @Setter
+@Builder
 public class ConfigurationView {
 
     private Long id;
 
+    @Builder.Default
     private boolean maintenance = false;
-
+    @Builder.Default
     private boolean ssoLoginAllowed = false;
 
     private String defaultLanguage;
-
+    @Builder.Default
     private boolean testInstance = false;
-
+    @Builder.Default
     private boolean sendAppInstanceFailureEmails = false;
-
+    @Builder.Default
     private List<@Email String> appInstanceFailureEmailList = new ArrayList<>();
 
     public ConfigurationView(boolean maintenance, boolean ssoLoginAllowed, String defaultLanguage, boolean testInstance, boolean sendAppInstanceFailureEmails, List<String> appInstanceFailureEmailList) {
diff --git a/src/main/java/net/geant/nmaas/portal/service/ConfigurationManager.java b/src/main/java/net/geant/nmaas/portal/service/ConfigurationManager.java
index 2f5f98f188d1ce6484926d59ac8e0a2144705921..6bd7ed09b62a3a6a01c8d935df194dca8460c447 100644
--- a/src/main/java/net/geant/nmaas/portal/service/ConfigurationManager.java
+++ b/src/main/java/net/geant/nmaas/portal/service/ConfigurationManager.java
@@ -4,7 +4,7 @@ import net.geant.nmaas.portal.api.configuration.ConfigurationView;
 
 public interface ConfigurationManager {
 
-    Long addConfiguration(ConfigurationView configuration);
+    Long setConfiguration(ConfigurationView configuration);
     ConfigurationView getConfiguration();
     void updateConfiguration(Long id, ConfigurationView updatedConfiguration);
 }
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerImpl.java
index 435721cc090bddf7ebd16f85b1b73783615bc64f..ff679c2ec75a081126f61688d574c0bc6385b63d 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerImpl.java
@@ -13,7 +13,6 @@ import org.modelmapper.ModelMapper;
 import org.springframework.stereotype.Component;
 import org.springframework.web.context.annotation.ApplicationScope;
 
-import java.util.ArrayList;
 import java.util.Optional;
 
 @ApplicationScope
@@ -21,11 +20,11 @@ import java.util.Optional;
 @Component
 public class ConfigurationManagerImpl implements ConfigurationManager {
 
-    private ConfigurationRepository repository;
+    private final ConfigurationRepository repository;
 
-    private ModelMapper modelMapper;
+    private final ModelMapper modelMapper;
 
-    private InternationalizationSimpleRepository internationalizationRepository;
+    private final InternationalizationSimpleRepository internationalizationRepository;
 
     @Override
     public ConfigurationView getConfiguration(){
@@ -33,7 +32,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager {
     }
 
     @Override
-    public Long addConfiguration(ConfigurationView configurationView) {
+    public Long setConfiguration(ConfigurationView configurationView) {
         if(repository.count() > 0){
             throw new OnlyOneConfigurationSupportedException("Configuration already exists. It can be either removed or updated");
         }
@@ -57,10 +56,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager {
     }
 
     private Configuration loadSingleConfiguration(){
-        if(repository.count() == 0){
-            addConfiguration(new ConfigurationView(false, true, "en", false, true, new ArrayList<>()));
-        }
-        else if(repository.count() > 1){
+        if(repository.count() > 1 || repository.count() == 0){
             throw new IllegalStateException("Found "+repository.count()+" configuration instead of one");
         }
         return repository.findAll().get(0);
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index e304f188ba37252e0b4c384fc98cc494ffc8994c..f3c7bcaf593da9c8209ab3c430ef238c57858af5 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -151,4 +151,15 @@ kubernetes.deployment.smtpServerHostname=nmaas-postfix
 kubernetes.deployment.smtpServerPort=587
 kubernetes.deployment.smtpServerUsername=
 kubernetes.deployment.smtpServerPassword=
-kubernetes.deployment.defaultStorageClass=storageClass
\ No newline at end of file
+kubernetes.deployment.defaultStorageClass=storageClass
+
+# ------------------------ #
+# Portal configuration #
+# ------------------------ #
+portal.config.maintenance=false
+portal.config.ssoLoginAllowed=false
+portal.config.defaultLanguage=en
+portal.config.testInstance=false
+portal.config.sendAppInstanceFailureEmails=false
+# string - list of emails with ':' as a separator, e.g. admin1@nmaas.eu;admin2@nmaas.eu
+portal.config.appInstanceFailureEmailList=admin@nmaas.eu
diff --git a/src/test/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerTest.java b/src/test/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerTest.java
index 6e56af4eb46a37a238ce60705347b4b9a3d1df3a..a493f43076a67d3446634f20a8dd0e4bd1968a63 100644
--- a/src/test/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerTest.java
+++ b/src/test/java/net/geant/nmaas/portal/service/impl/ConfigurationManagerTest.java
@@ -59,18 +59,18 @@ public class ConfigurationManagerTest {
     }
 
     @Test
-    public void shouldAddConfiguration(){
+    public void shouldSetConfiguration(){
         when(repository.count()).thenReturn(0L);
-        Long id = configurationManager.addConfiguration(modelMapper.map(config, ConfigurationView.class));
+        Long id = configurationManager.setConfiguration(modelMapper.map(config, ConfigurationView.class));
         assertEquals(config.getId(), id);
         verify(repository, times(1)).save(any());
     }
 
     @Test
-    public void shouldNotAddMultipleConfig(){
+    public void shouldNotSetConfigIfAlreadyExists(){
         assertThrows(OnlyOneConfigurationSupportedException.class, () -> {
             when(repository.count()).thenReturn(1L);
-            configurationManager.addConfiguration(modelMapper.map(config, ConfigurationView.class));
+            configurationManager.setConfiguration(modelMapper.map(config, ConfigurationView.class));
         });
     }
 
diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties
index 93c069adb27b4b974c9ffdbb3816dcf170f9e144..2f6e2e93aee0a97e87d2839642038bab32ac176c 100644
--- a/src/test/resources/application.properties
+++ b/src/test/resources/application.properties
@@ -139,4 +139,15 @@ kubernetes.deployment.smtpServerHostname=nmaas-postfix
 kubernetes.deployment.smtpServerPort=587
 kubernetes.deployment.smtpServerUsername=
 kubernetes.deployment.smtpServerPassword=
-kubernetes.deployment.defaultStorageClass=storageClass
\ No newline at end of file
+kubernetes.deployment.defaultStorageClass=storageClass
+
+# ------------------------ #
+# Portal configuration #
+# ------------------------ #
+portal.config.maintenance=false
+portal.config.ssoLoginAllowed=false
+portal.config.defaultLanguage=en
+portal.config.testInstance=false
+portal.config.sendAppInstanceFailureEmails=false
+# string - list of emails with ':' as a separator, e.g. admin1@nmaas.eu;admin2@nmaas.eu
+portal.config.appInstanceFailureEmailList=admin@nmaas.eu
\ No newline at end of file