Merge "AppsControllerExternalRequest class fix"
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/config/NotificationCleanupConfig.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/config/NotificationCleanupConfig.java
index f18dea9..c32650e 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/config/NotificationCleanupConfig.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/config/NotificationCleanupConfig.java
@@ -40,6 +40,7 @@
  */
 package org.onap.portalapp.config;
 
+import org.springframework.beans.BeansException;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.context.annotation.Bean;
@@ -51,23 +52,25 @@
 
 @Configuration
 public class NotificationCleanupConfig implements ApplicationContextAware {
-	
+
 	// Once every 10 minutes should be adequate
-	public static final int CLEANUP_PERIOD_MINUTES = 10;
-	
+	private static final int CLEANUP_PERIOD_MINUTES = 10;
+
 	private static ApplicationContext applicationContext;
 
-	public void setApplicationContext(ApplicationContext context) {
-		applicationContext = context;
+
+	@Override
+	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+		NotificationCleanupConfig.applicationContext = applicationContext;
 	}
 
-	public static ApplicationContext getApplicationContext() {
+	static ApplicationContext getApplicationContext() {
 		return applicationContext;
 
 	}
 
 	@PostConstruct
-	public void StartSchedular() {
+	public void startSchedular() {
 		TimerTask task = new NotificationCleanup();
 		Timer timer = new Timer();
 		timer.schedule(task, 1000, (long) CLEANUP_PERIOD_MINUTES * 60 * 1000);
@@ -77,5 +80,4 @@
 	public NotificationCleanupConfig getConfig() {
 		return new NotificationCleanupConfig();
 	}
-
 }
\ No newline at end of file
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/SchedulerController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/SchedulerController.java
index af34176..69f2568 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/SchedulerController.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/SchedulerController.java
@@ -41,7 +41,6 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
@@ -49,12 +48,12 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import lombok.NoArgsConstructor;
 import org.json.simple.JSONObject;
 import org.onap.portalapp.controller.EPRestrictedBaseController;
 import org.onap.portalapp.portal.domain.EPUser;
 import org.onap.portalapp.portal.ecomp.model.PortalRestResponse;
 import org.onap.portalapp.portal.ecomp.model.PortalRestStatusEnum;
-import org.onap.portalapp.portal.exceptions.RoleFunctionException;
 import org.onap.portalapp.portal.logging.aop.EPAuditLog;
 import org.onap.portalapp.portal.logging.logic.EPLogUtil;
 import org.onap.portalapp.portal.scheduler.SchedulerProperties;
@@ -70,7 +69,6 @@
 import org.onap.portalapp.portal.utils.PortalConstants;
 import org.onap.portalapp.util.EPUserUtils;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.onap.portalsdk.core.service.DataAccessService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
@@ -87,62 +85,66 @@
 @Configuration
 @EnableAspectJAutoProxy
 @EPAuditLog
+@NoArgsConstructor
 public class SchedulerController extends EPRestrictedBaseController {
+	private static final String USER_IS_UNAUTHORIZED_TO_MAKE_THIS_CALL = "User is unauthorized to make this call";
 
-	@Autowired
+	private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SchedulerController.class);
+	private static final DateFormat requestDateFormat = new SimpleDateFormat("EEE, dd MMM YYYY HH:mm:ss z");
+
 	private SchedulerRestInterface schedulerRestController;
-	
-	@Autowired
 	private AdminRolesService adminRolesService;
 
-	private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SchedulerController.class);
-
-	/** The request date format. */
-	public DateFormat requestDateFormat = new SimpleDateFormat("EEE, dd MMM YYYY HH:mm:ss z");
+	@Autowired
+	public SchedulerController(SchedulerRestInterface schedulerRestController,
+		AdminRolesService adminRolesService) {
+		this.schedulerRestController = schedulerRestController;
+		this.adminRolesService = adminRolesService;
+	}
 
 	@RequestMapping(value = "/get_time_slots/{scheduler_request}", method = RequestMethod.GET, produces = "application/json")
 	public ResponseEntity<String> getTimeSlots(HttpServletRequest request,
-			@PathVariable("scheduler_request") String scheduler_request) throws Exception {
+			@PathVariable("scheduler_request") String schedulerRequest) throws Exception {
 		if (checkIfUserISValidToMakeSchedule(request)) {
 			try {
 				Date startingTime = new Date();
 				String startTimeRequest = requestDateFormat.format(startingTime);
 				logger.debug(EELFLoggerDelegate.debugLogger,
 						"Controller Scheduler GET Timeslots for startTimeRequest: ", startTimeRequest);
-				logger.debug(EELFLoggerDelegate.debugLogger, "Original Request = {} ", scheduler_request);
+				logger.debug(EELFLoggerDelegate.debugLogger, "Original Request = {} ", schedulerRequest);
 
 				String path = SchedulerProperties.getProperty(SchedulerProperties.SCHEDULER_GET_TIME_SLOTS)
-						+ scheduler_request;
+						+ schedulerRequest;
 
-				GetTimeSlotsWrapper schedulerResWrapper = getTimeSlots(scheduler_request, path, scheduler_request);
+				GetTimeSlotsWrapper schedulerResWrapper = getTimeSlots(path, schedulerRequest);
 
 				Date endTime = new Date();
 				String endTimeRequest = requestDateFormat.format(endTime);
 				logger.debug(EELFLoggerDelegate.debugLogger, "Controller Scheduler - GET for EndTimeRequest = {}",
 						endTimeRequest);
-				return (new ResponseEntity<String>(schedulerResWrapper.getResponse(),
-						HttpStatus.valueOf(schedulerResWrapper.getStatus())));
+				return (new ResponseEntity<>(schedulerResWrapper.getResponse(),
+					HttpStatus.valueOf(schedulerResWrapper.getStatus())));
 			} catch (Exception e) {
 				GetTimeSlotsWrapper schedulerResWrapper = new GetTimeSlotsWrapper();
 				schedulerResWrapper.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
 				schedulerResWrapper.setEntity(e.getMessage());
 				logger.error(EELFLoggerDelegate.errorLogger, "Exception with getTimeslots", e);
-				return (new ResponseEntity<String>(schedulerResWrapper.getResponse(),
-						HttpStatus.INTERNAL_SERVER_ERROR));
+				return (new ResponseEntity<>(schedulerResWrapper.getResponse(),
+					HttpStatus.INTERNAL_SERVER_ERROR));
 			}
 		}else{
-			return (new ResponseEntity<String>("User is unauthorized to make this call", HttpStatus.UNAUTHORIZED));
+			return (new ResponseEntity<>(USER_IS_UNAUTHORIZED_TO_MAKE_THIS_CALL, HttpStatus.UNAUTHORIZED));
 		}
 	}
 
-	protected GetTimeSlotsWrapper getTimeSlots(String request, String path, String uuid) throws Exception {
+	protected GetTimeSlotsWrapper getTimeSlots(String path, String uuid) throws Exception {
 
 		try {
 			// STARTING REST API CALL AS AN FACTORY INSTACE
 			logger.debug(EELFLoggerDelegate.debugLogger, "Get Time Slots Request START");
 
-			GetTimeSlotsRestObject<String> restObjStr = new GetTimeSlotsRestObject<String>();
-			String str = new String();
+			GetTimeSlotsRestObject<String> restObjStr = new GetTimeSlotsRestObject<>();
+			String str = "";
 
 			restObjStr.set(str);
 
@@ -169,7 +171,7 @@
 	@SuppressWarnings("unchecked")
 	@RequestMapping(value = "/post_create_new_vnf_change", method = RequestMethod.POST, produces = "application/json")
 	public ResponseEntity<String> postCreateNewVNFChange(HttpServletRequest request,
-			@RequestBody JSONObject scheduler_request) throws Exception {
+			@RequestBody JSONObject schedulerRequest) throws Exception {
 		if (checkIfUserISValidToMakeSchedule(request)) {
 			try {
 				Date startingTime = new Date();
@@ -181,34 +183,34 @@
 				// Generating uuid
 				String uuid = UUID.randomUUID().toString();
 
-				scheduler_request.put("scheduleId", uuid);
+				schedulerRequest.put("scheduleId", uuid);
 				logger.debug(EELFLoggerDelegate.debugLogger, "UUID = {} ", uuid);
 
 				// adding uuid to the request payload
-				scheduler_request.put("scheduleId", uuid);
-				logger.debug(EELFLoggerDelegate.debugLogger, "Original Request = {}", scheduler_request.toString());
+				schedulerRequest.put("scheduleId", uuid);
+				logger.debug(EELFLoggerDelegate.debugLogger, "Original Request = {}", schedulerRequest.toString());
 
 				String path = SchedulerProperties
 						.getProperty(SchedulerProperties.SCHEDULER_CREATE_NEW_VNF_CHANGE_INSTANCE_VAL) + uuid;
 
-				PostCreateNewVnfWrapper responseWrapper = postSchedulingRequest(scheduler_request, path, uuid);
+				PostCreateNewVnfWrapper responseWrapper = postSchedulingRequest(schedulerRequest, path, uuid);
 
 				Date endTime = new Date();
 				String endTimeRequest = requestDateFormat.format(endTime);
 				logger.debug(EELFLoggerDelegate.debugLogger, "Controller Scheduler - POST= {}", endTimeRequest);
 
-				return new ResponseEntity<String>(responseWrapper.getResponse(),
-						HttpStatus.valueOf(responseWrapper.getStatus()));
+				return new ResponseEntity<>(responseWrapper.getResponse(),
+					HttpStatus.valueOf(responseWrapper.getStatus()));
 			} catch (Exception e) {
 				PostCreateNewVnfWrapper responseWrapper = new PostCreateNewVnfWrapper();
 				responseWrapper.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
 				responseWrapper.setEntity(e.getMessage());
 				logger.error(EELFLoggerDelegate.errorLogger, "Exception with postCreateNewVNFChange ", e);
-				return (new ResponseEntity<String>(responseWrapper.getResponse(), HttpStatus.INTERNAL_SERVER_ERROR));
+				return (new ResponseEntity<>(responseWrapper.getResponse(), HttpStatus.INTERNAL_SERVER_ERROR));
 
 			}
 		}else{
-			return (new ResponseEntity<String>("User is unauthorized to make this call",HttpStatus.UNAUTHORIZED));
+			return (new ResponseEntity<>(USER_IS_UNAUTHORIZED_TO_MAKE_THIS_CALL, HttpStatus.UNAUTHORIZED));
 		}
 
 	}
@@ -219,11 +221,11 @@
 		try {
 			// STARTING REST API CALL AS AN FACTORY INSTACE
 
-			PostCreateNewVnfRestObject<String> restObjStr = new PostCreateNewVnfRestObject<String>();
-			String str = new String();
+			PostCreateNewVnfRestObject<String> restObjStr = new PostCreateNewVnfRestObject<>();
+			String str = "";
 
 			restObjStr.set(str);
-			schedulerRestController.<String>Post(str, request, path, restObjStr);
+			schedulerRestController.Post(str, request, path, restObjStr);
 
 			int status = restObjStr.getStatusCode();
 			if (status >= 200 && status <= 299) {
@@ -249,7 +251,7 @@
 
 	@RequestMapping(value = "/submit_vnf_change_timeslots", method = RequestMethod.POST, produces = "application/json")
 	public ResponseEntity<String> postSubmitVnfChangeTimeslots(HttpServletRequest request,
-			@RequestBody JSONObject scheduler_request) throws Exception {
+			@RequestBody JSONObject schedulerRequest) throws Exception {
 		if (checkIfUserISValidToMakeSchedule(request)) {
 		try {
 			Date startingTime = new Date();
@@ -258,17 +260,17 @@
 					startTimeRequest);
 
 			// Generating uuid
-			String uuid = (String) scheduler_request.get("scheduleId");
+			String uuid = (String) schedulerRequest.get("scheduleId");
 			logger.debug(EELFLoggerDelegate.debugLogger, "UUID = {} ", uuid);
 
-			scheduler_request.remove("scheduleId");
+			schedulerRequest.remove("scheduleId");
 			logger.debug(EELFLoggerDelegate.debugLogger, "Original Request for the schedulerId= {} ",
-					scheduler_request.toString());
+					schedulerRequest.toString());
 
 			String path = SchedulerProperties.getProperty(SchedulerProperties.SCHEDULER_SUBMIT_NEW_VNF_CHANGE)
 					.replace("{scheduleId}", uuid);
 
-			PostSubmitVnfChangeTimeSlotsWrapper responseWrapper = postSubmitSchedulingRequest(scheduler_request, path,
+			PostSubmitVnfChangeTimeSlotsWrapper responseWrapper = postSubmitSchedulingRequest(schedulerRequest, path,
 					uuid);
 
 			Date endTime = new Date();
@@ -276,17 +278,17 @@
 			logger.debug(EELFLoggerDelegate.debugLogger, " Controller Scheduler - POST Submit for end time request= {}",
 					endTimeRequest);
 
-			return (new ResponseEntity<String>(responseWrapper.getResponse(),HttpStatus.valueOf(responseWrapper.getStatus())));
+			return (new ResponseEntity<>(responseWrapper.getResponse(), HttpStatus.valueOf(responseWrapper.getStatus())));
 			} catch (Exception e) {
 				PostSubmitVnfChangeTimeSlotsWrapper responseWrapper = new PostSubmitVnfChangeTimeSlotsWrapper();
 				responseWrapper.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
 				responseWrapper.setEntity(e.getMessage());
 				logger.error(EELFLoggerDelegate.errorLogger, "Exception with Post submit Vnf change Timeslots", e);
-				return (new ResponseEntity<String>(responseWrapper.getResponse(), HttpStatus.INTERNAL_SERVER_ERROR));
+				return (new ResponseEntity<>(responseWrapper.getResponse(), HttpStatus.INTERNAL_SERVER_ERROR));
 
 			}
 		}else{
-			return (new ResponseEntity<String>("User is unauthorized to make this call",HttpStatus.UNAUTHORIZED));
+			return (new ResponseEntity<>(USER_IS_UNAUTHORIZED_TO_MAKE_THIS_CALL, HttpStatus.UNAUTHORIZED));
 		}
 	}
 
@@ -296,11 +298,11 @@
 		try {
 			// STARTING REST API CALL AS AN FACTORY INSTACE
 
-			PostSubmitVnfChangeRestObject<String> restObjStr = new PostSubmitVnfChangeRestObject<String>();
-			String str = new String();
+			PostSubmitVnfChangeRestObject<String> restObjStr = new PostSubmitVnfChangeRestObject<>();
+			String str = "";
 
 			restObjStr.set(str);
-			schedulerRestController.<String>Post(str, request, path, restObjStr);
+			schedulerRestController.Post(str, request, path, restObjStr);
 
 			int status = restObjStr.getStatusCode();
 			if (status >= 200 && status <= 299) {
@@ -362,19 +364,19 @@
 						throw new Exception(entry.getKey() + errorMsg);
 				}
 				logger.debug(EELFLoggerDelegate.debugLogger, " portalRestResponse - getSchedulerConstant= {}", map);
-				portalRestResponse = new PortalRestResponse<Map<String, String>>(PortalRestStatusEnum.OK, "success",
-						map);
+				portalRestResponse = new PortalRestResponse<>(PortalRestStatusEnum.OK, "success",
+					map);
 
 			} catch (Exception e) {
 				logger.error(EELFLoggerDelegate.errorLogger, "getSchedulerConstant failed", e);
-				portalRestResponse = new PortalRestResponse<Map<String, String>>(PortalRestStatusEnum.ERROR,
-						e.getMessage(), null);
+				portalRestResponse = new PortalRestResponse<>(PortalRestStatusEnum.ERROR,
+					e.getMessage(), null);
 			}
 
 		}
         else{
 			logger.error(EELFLoggerDelegate.errorLogger, "getSchedulerConstant failed: User unauthorized to make this call");
-        	portalRestResponse = new PortalRestResponse<Map<String, String>>(PortalRestStatusEnum.ERROR, "failed : Unauthorized", null);
+			portalRestResponse = new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "failed : Unauthorized", null);
         }
 				return portalRestResponse;
 	}
@@ -397,8 +399,6 @@
 		EPUser user = EPUserUtils.getUserSession(request);
 		String portalApiPath = getPath(request);
 		Set<String> functionCodeList = adminRolesService.getAllAppsFunctionsOfUser(user.getId().toString());
-		boolean isValidUser =	EPUserUtils.matchRoleFunctions(portalApiPath, functionCodeList);
-//		boolean isValidUser = functionCodeList.stream().anyMatch(x -> functionCodeList.contains(portalApiPath));
-		return isValidUser;
+		return EPUserUtils.matchRoleFunctions(portalApiPath, functionCodeList);
 	}
 }
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/ExternalRoleDetails.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/ExternalRoleDetails.java
index e561c8d..bb90278 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/ExternalRoleDetails.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/ExternalRoleDetails.java
@@ -38,78 +38,27 @@
 package org.onap.portalapp.portal.domain;
 
 import java.util.List;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
 
+@Getter
+@Setter
+@EqualsAndHashCode
 public class ExternalRoleDetails implements Comparable {
 
-	
 	private String  name;
     private boolean active;
     private Integer priority;
-    
     private Long appId;     // used by ONAP only 
     private Long appRoleId; // used by ONAP only
-
 	private List<EPAppRoleFunction> perms;
 
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public boolean isActive() {
-		return active;
-	}
-
-	public void setActive(boolean active) {
-		this.active = active;
-	}
-
-	public Integer getPriority() {
-		return priority;
-	}
-
-	public void setPriority(Integer priority) {
-		this.priority = priority;
-	}
-
-	public Long getAppId() {
-		return appId;
-	}
-
-	public void setAppId(Long appId) {
-		this.appId = appId;
-	}
-
-	public Long getAppRoleId() {
-		return appRoleId;
-	}
-
-	public void setAppRoleId(Long appRoleId) {
-		this.appRoleId = appRoleId;
-	}
-
-
-
-	public List<EPAppRoleFunction> getPerms() {
-		return perms;
-	}
-
-	public void setPerms(List<EPAppRoleFunction> perms) {
-		this.perms = perms;
-	}
-
 	@Override
 	public int compareTo(Object obj) {
 		EPRole other = (EPRole)obj;
-
-    	String c1 = getName();
-    	String c2 = other.getName();
-
-    	return (c1 == null || c2 == null) ? 1 : c1.compareTo(c2);
+		return (this.getName() == null || other.getName() == null) ? 1 : getName().equals(other.getName()) ? 0 : 1;
 	}
 
-	
+
 }
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterface.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterface.java
index 1886b8b..14dfebe 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterface.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterface.java
@@ -37,20 +37,20 @@
  */
 package org.onap.portalapp.portal.scheduler;
 
-import java.lang.reflect.Type;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonDeserializer;
 import java.util.Collections;
 import java.util.Date;
-
 import javax.security.auth.login.CredentialException;
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.Entity;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedHashMap;
 import javax.ws.rs.core.Response;
-
+import lombok.NoArgsConstructor;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.lang.StringUtils;
-import org.apache.cxf.jaxrs.impl.ResponseImpl;
 import org.eclipse.jetty.util.security.Password;
 import org.json.simple.JSONObject;
 import org.onap.portalapp.portal.logging.format.EPAppMessagesEnum;
@@ -63,45 +63,28 @@
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.HttpClientErrorException;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParseException;
-
+@SuppressWarnings("MalformedFormatString")
 @Service
+@NoArgsConstructor
 public class SchedulerRestInterface implements SchedulerRestInterfaceIfc {
-
+	private static final String APPLICATION_JSON = "application/json";
 	private static final String PASSWORD_IS_EMPTY = "Password is Empty";
+	private static final String HTTP_CLIENT_ERROR = " HttpClientErrorException: Exception For the POST  ." 
+													+ " MethodName: %APPLICATION_JSON, Url: %APPLICATION_JSON";
 
+	private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SchedulerRestInterface.class);
 	private static Client client = null;
+	private static Gson gson = null;
 
 	private MultivaluedHashMap<String, Object> commonHeaders;
 
-	/** The logger. */
-	static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SchedulerRestInterface.class);
-
-	public SchedulerRestInterface() {
-		super();
-	}
-
-	Gson gson = null;
-
-	private final ObjectMapper mapper = new ObjectMapper();
-
-	private void init() {
+	private static void init() {
 		logger.debug(EELFLoggerDelegate.debugLogger, "initializing");
 		GsonBuilder builder = new GsonBuilder();
 
 		// Register an adapter to manage the date types as long values
-		builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
-			public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
-					throws JsonParseException {
-				return new Date(json.getAsJsonPrimitive().getAsLong());
-			}
-		});
+		builder.registerTypeAdapter(Date.class,
+			(JsonDeserializer<Date>) (json, typeOfT, context) -> new Date(json.getAsJsonPrimitive().getAsLong()));
 
 		gson = builder.create();
 	}
@@ -114,7 +97,6 @@
 		final String username;
 		final String password;
 
-		String methodName = "initRestClient";
 		/* Setting user name based on properties */
 		String retrievedUsername = SchedulerProperties.getProperty(SchedulerProperties.SCHEDULER_USER_NAME_VAL);
 		if (retrievedUsername.isEmpty()) {
@@ -145,8 +127,8 @@
 		byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
 		String authStringEnc = new String(authEncBytes);
 
-		commonHeaders = new MultivaluedHashMap<String, Object>();
-		commonHeaders.put("Authorization", Collections.singletonList((Object) ("Basic " + authStringEnc)));
+		commonHeaders = new MultivaluedHashMap<>();
+		commonHeaders.put("Authorization", Collections.singletonList(("Basic " + authStringEnc)));
 
 		try {
 			if (!username.isEmpty()) {
@@ -166,7 +148,7 @@
 
 	@SuppressWarnings("unchecked")
 	public <T> void Get(T t, String sourceId, String path,
-			org.onap.portalapp.portal.scheduler.restobjects.RestObject<T> restObject) throws Exception {
+			org.onap.portalapp.portal.scheduler.restobjects.RestObject<T> restObject) {
 
 		String methodName = "Get";
 		String url = SchedulerProperties.getProperty(SchedulerProperties.SCHEDULER_SERVER_URL_VAL) + path;
@@ -175,14 +157,14 @@
 		try {
 			initRestClient();
 
-			final Response cres = client.target(url).request().accept("application/json").headers(commonHeaders).get();
+			final Response cres = client.target(url).request().accept(APPLICATION_JSON).headers(commonHeaders).get();
 
 			int status = cres.getStatus();
 			restObject.setStatusCode(status);
 
-			if (cres != null && cres.getEntity() != null) {
+			if (cres.getEntity() != null) {
 				try {
-					String str = ((ResponseImpl) cres).readEntity(String.class);
+					String str = (cres).readEntity(String.class);
 					if (t.getClass().getName().equals(String.class.getName())) {
 						t = (T) str;
 
@@ -195,23 +177,21 @@
 				}
 			} else {
 				t = null;
-				restObject.set(t);
+				restObject.set(null);
 			}
 
-			// t = (T) cres.readEntity(t.getClass());
-
-			if (t.equals("")) {
+			if ("".equals(t)) {
 				restObject.set(null);
 			} else {
 				restObject.set(t);
 			}
 		} catch (HttpClientErrorException e) {
 			String message = String.format(
-					" HttpClientErrorException: Exception For the POST  . MethodName: %s, Url: %s", methodName, url);
+					HTTP_CLIENT_ERROR, methodName, url);
 			logger.error(EELFLoggerDelegate.errorLogger, message, e);
 			EPLogUtil.schedulerAccessAlarm(logger, e.getStatusCode().value());
 		} catch (Exception e) {
-			String message = String.format("Exception For the POST . MethodName: %s, Url: %s", methodName, url);
+			String message = String.format("Exception For the POST . MethodName: %APPLICATION_JSON, Url: %APPLICATION_JSON", methodName, url);
 
 			logger.error(EELFLoggerDelegate.errorLogger, message, e);
 			EPLogUtil.schedulerAccessAlarm(logger, HttpStatus.INTERNAL_SERVER_ERROR.value());
@@ -223,7 +203,7 @@
 	}
 
 	@SuppressWarnings("unchecked")
-	public <T> void Post(T t, JSONObject requestDetails, String path, RestObject<T> restObject) throws Exception {
+	public <T> void Post(T t, JSONObject requestDetails, String path, RestObject<T> restObject) {
 
 		String methodName = "Post";
 		String url = SchedulerProperties.getProperty(SchedulerProperties.SCHEDULER_SERVER_URL_VAL) + path;
@@ -234,13 +214,13 @@
 			initRestClient();
 
 			// Change the content length
-			final Response cres = client.target(url).request().accept("application/json").headers(commonHeaders)
+			final Response cres = client.target(url).request().accept(APPLICATION_JSON).headers(commonHeaders)
 					.post(Entity.entity(requestDetails, MediaType.APPLICATION_JSON));
 
 			if (cres != null && cres.getEntity() != null) {
 
 				try {
-					String str = ((ResponseImpl) cres).readEntity(String.class);
+					String str = (cres).readEntity(String.class);
 					if (t.getClass().getName().equals(String.class.getName())) {
 						t = (T) str;
 
@@ -251,14 +231,12 @@
 				} catch (Exception e) {
 					EPLogUtil.logEcompError(logger, EPAppMessagesEnum.BeInvalidJsonInput, e);
 				}
-				// t = (T) cres.readEntity(t.getClass());
 				restObject.set(t);
 			} else {
-				t = null;
-				restObject.set(t);
+				restObject.set(null);
 			}
 
-			int status = cres.getStatus();
+			int status = cres != null ? cres.getStatus() : 0;
 			restObject.setStatusCode(status);
 
 			if (status >= 200 && status <= 299) {
@@ -266,19 +244,19 @@
 				logger.debug(EELFLoggerDelegate.debugLogger, message);
 
 			} else {
-				String message = String.format(" FAILED with http status  . MethodName: %s, Status: %s, Url: %s",
+				String message = String.format(" FAILED with http status  . MethodName: %APPLICATION_JSON, Status: %APPLICATION_JSON, Url: %APPLICATION_JSON",
 						methodName, status, url);
 				logger.debug(EELFLoggerDelegate.debugLogger, message);
 			}
 
 		} catch (HttpClientErrorException e) {
 			String message = String.format(
-					" HttpClientErrorException: Exception For the POST  . MethodName: %s, Url: %s", methodName, url);
+					HTTP_CLIENT_ERROR, methodName, url);
 			logger.error(EELFLoggerDelegate.errorLogger, message, e);
 			EPLogUtil.schedulerAccessAlarm(logger, e.getStatusCode().value());
 		} catch (Exception e) {
 			String message = String.format(
-					" HttpClientErrorException: Exception For the POST  . MethodName: %s, Url: %s", methodName, url);
+					HTTP_CLIENT_ERROR, methodName, url);
 			logger.error(EELFLoggerDelegate.errorLogger, message, e);
 			EPLogUtil.schedulerAccessAlarm(logger, HttpStatus.INTERNAL_SERVER_ERROR.value());
 			throw e;
@@ -287,6 +265,7 @@
 
 	@Override
 	public void logRequest(JSONObject requestDetails) {
+		throw new UnsupportedOperationException();
 	}
 
 	@SuppressWarnings("unchecked")
@@ -294,18 +273,16 @@
 
 		String methodName = "Delete";
 		String url = "";
-		Response cres = null;
+		Response cres;
 
 		try {
 			initRestClient();
 
 			url = SchedulerProperties.getProperty(SchedulerProperties.SCHEDULER_SERVER_URL_VAL) + path;
 
-			cres = client.target(url).request().accept("application/json").headers(commonHeaders)
+			cres = client.target(url).request().accept(APPLICATION_JSON).headers(commonHeaders)
 					// .entity(r)
 					.build("DELETE", Entity.entity(requestDetails, MediaType.APPLICATION_JSON)).invoke();
-			// .method("DELETE", Entity.entity(r, MediaType.APPLICATION_JSON));
-			// .delete(Entity.entity(r, MediaType.APPLICATION_JSON));
 
 			int status = cres.getStatus();
 			restObject.setStatusCode(status);
@@ -325,8 +302,4 @@
 		}
 	}
 
-	public <T> T getInstance(Class<T> clazz) throws IllegalAccessException, InstantiationException {
-		return clazz.newInstance();
-	}
-
 }
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterfaceIfc.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterfaceIfc.java
index c49dd1d..8d37a12 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterfaceIfc.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/scheduler/SchedulerRestInterfaceIfc.java
@@ -45,14 +45,14 @@
 @Service
 public interface SchedulerRestInterfaceIfc {
 
-	public void initRestClient();
+	void initRestClient();
 
-	public <T> void Get(T t, String sourceId, String path, org.onap.portalapp.portal.scheduler.restobjects.RestObject<T> restObject ) throws Exception;
+	<T> void Get(T t, String sourceId, String path, org.onap.portalapp.portal.scheduler.restobjects.RestObject<T> restObject ) throws Exception;
 
-	public <T> void Delete(T t, JSONObject requestDetails, String sourceID, String path, RestObject<T> restObject)
+	<T> void Delete(T t, JSONObject requestDetails, String sourceID, String path, RestObject<T> restObject)
 			throws Exception;
 
-	public <T> void Post(T t, JSONObject r, String path, RestObject<T> restObject) throws Exception;
+	<T> void Post(T t, JSONObject r, String path, RestObject<T> restObject) throws Exception;
 
-	public void logRequest(JSONObject requestDetails);
-}
\ No newline at end of file
+	void logRequest(JSONObject requestDetails);
+}
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPRoleFunctionServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPRoleFunctionServiceImpl.java
index 4a3cf63..c088164 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPRoleFunctionServiceImpl.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPRoleFunctionServiceImpl.java
@@ -86,7 +86,7 @@
 				.getAttribute(SystemProperties.getProperty(SystemProperties.ROLE_FUNCTIONS_ATTRIBUTE_NAME));
 
 		if (roleFunctions == null) {
-			HashMap roles = EPUserUtils.getRoles(request);
+			HashMap roles = (HashMap) EPUserUtils.getRoles(request);
 			roleFunctions = new HashSet();
 
 			Iterator i = roles.keySet().iterator();
diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/util/EPUserUtils.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/util/EPUserUtils.java
index 99a2911..80db8c8 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/util/EPUserUtils.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/util/EPUserUtils.java
@@ -2,7 +2,7 @@
  * ============LICENSE_START==========================================
  * ONAP Portal
  * ===================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
  * ===================================================================
  *
  * Unless otherwise specified, all software contained herein is licensed
@@ -41,18 +41,16 @@
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
-
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
-
 import org.apache.commons.codec.DecoderException;
 import org.apache.commons.codec.binary.Hex;
 import org.onap.portalapp.portal.domain.EPRole;
@@ -70,18 +68,14 @@
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class EPUserUtils {
-
-	private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EPUserUtils.class);
-
-	private final static Long ACCOUNT_ADMIN_ROLE_ID = 999L;
-
 	public static final String ALL_ROLE_FUNCTIONS = "allRoleFunctions";
-	
-	// These decode values are based on HexDecoder
+
 	private	static final String decodeValueOfForwardSlash = "2f";
 	private	static final String decodeValueOfHyphen = "2d";
 	private static final String decodeValueOfAsterisk = "2a";
+	private static final Long ACCOUNT_ADMIN_ROLE_ID = 999L;
 
+	private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EPUserUtils.class);
 	private static DataAccessService dataAccessService;
 
 	/**
@@ -111,15 +105,13 @@
 	 *            Menu data
 	 * @param businessDirectMenuData
 	 *            Menu data
-	 * @param loginMethod_ignored
-	 *            How the user authenticated; ignored
 	 * @param ePRoleFunctionService
 	 *            role function service
 	 * @throws DecoderException 
 	 */
 	@SuppressWarnings("rawtypes")
 	public static void setUserSession(HttpServletRequest request, EPUser user, Set applicationMenuData,
-			Set businessDirectMenuData, String loginMethod_ignored, EPRoleFunctionService ePRoleFunctionService) throws RoleFunctionException {
+			Set businessDirectMenuData, EPRoleFunctionService ePRoleFunctionService) throws RoleFunctionException {
 		HttpSession session = request.getSession(true);
 
 		// clear the current user session to avoid any conflicts
@@ -136,9 +128,8 @@
 		session.setAttribute(SystemProperties.getProperty(SystemProperties.USER_NAME), user.getFullName());
 
 		ServletContext context = session.getServletContext();
-		int licenseVerificationFlag = 3;
 		try {
-			licenseVerificationFlag = (Integer) context.getAttribute("licenseVerification");
+			context.getAttribute("licenseVerification");
 		} catch (Exception e) {
 			logger.error(EELFLoggerDelegate.errorLogger, "setUserSession failed to get licenseVerification attribute",
 					e);
@@ -163,7 +154,7 @@
 	private static void setAllRoleFunctions(List<RoleFunction> allRoleFunctions, HttpSession session) throws RoleFunctionException {
 		if (allRoleFunctions == null)
 			return;
-		Set<String> roleFnSet = new HashSet<String>();
+		Set<String> roleFnSet = new HashSet<>();
 		for (RoleFunction roleFn : allRoleFunctions){
 			roleFnSet.add(decodeFunctionCode(roleFn.getCode()));
 		}
@@ -221,8 +212,8 @@
 	 * @return Map of role ID to role object
 	 */
 	@SuppressWarnings("rawtypes")
-	public static HashMap getRoles(HttpServletRequest request) {
-		HashMap roles = null;
+	public static Map getRoles(HttpServletRequest request) {
+		HashMap roles;
 
 		HttpSession session = AppUtils.getSession(request);
 		roles = (HashMap) session.getAttribute(SystemProperties.getProperty(SystemProperties.ROLES_ATTRIBUTE_NAME));
@@ -251,11 +242,8 @@
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	private static HashMap getAllUserRoles(EPUser user) {
 		HashMap roles = new HashMap();
-		Iterator i = user.getEPRoles().iterator();
 
-		while (i.hasNext()) {
-			EPRole role = (EPRole) i.next();
-
+		for (EPRole role : user.getEPRoles()) {
 			if (role.getActive()) {
 				roles.put(role.getId(), role);
 
@@ -267,9 +255,8 @@
 
 		// Additionally; the account admin role is overloaded between onap
 		// portal and partners; lets also include that
-		Iterator<EPUserApp> appRolesIterator = user.getEPUserApps().iterator();
-		while (appRolesIterator.hasNext()) {
-			EPRole role = (EPRole) appRolesIterator.next().getRole();
+		for (EPUserApp epUserApp : user.getEPUserApps()) {
+			EPRole role = epUserApp.getRole();
 
 			if (role.getActive() && role.getId().equals(ACCOUNT_ADMIN_ROLE_ID)) {
 				roles.put(role.getId(), role);
@@ -295,10 +282,9 @@
 	private static void addChildRoles(EPRole role, HashMap roles) {
 		Set childRoles = role.getChildRoles();
 
-		if (childRoles != null && childRoles.size() > 0) {
-			Iterator j = childRoles.iterator();
-			while (j.hasNext()) {
-				EPRole childRole = (EPRole) j.next();
+		if (childRoles != null && !childRoles.isEmpty()) {
+			for (Object o : childRoles) {
+				EPRole childRole = (EPRole) o;
 
 				if (childRole.getActive()) {
 					roles.put(childRole.getId(), childRole);
@@ -319,7 +305,7 @@
 	}
 
 	@Autowired
-	public void setDataAccessService(DataAccessService dataAccessService) {
+	public static void setDataAccessService(DataAccessService dataAccessService) {
 		EPUserUtils.dataAccessService = dataAccessService;
 	}
 
@@ -341,12 +327,10 @@
 	 *            HttpServletREquest
 	 * @return Long ID of current user
 	 */
-	public static Long getUserIdAsLong(HttpServletRequest request) {
+	static Long getUserIdAsLong(HttpServletRequest request) {
 		Long userId = new Long(SystemProperties.getProperty(SystemProperties.APPLICATION_USER_ID));
-		if (request != null) {
-			if (getUserSession(request) != null) {
+		if (request != null && getUserSession(request) != null) {
 				userId = getUserSession(request).getId();
-			}
 		}
 		return userId;
 	}
@@ -364,7 +348,7 @@
 		String requestId = "";
 		try {
 			while (headerNames.hasMoreElements()) {
-				String headerName = (String) headerNames.nextElement();
+				String headerName = headerNames.nextElement();
 				logger.debug(EELFLoggerDelegate.debugLogger,
 						"One header is " + headerName + " : " + request.getHeader(headerName));
 				if (headerName.equalsIgnoreCase(SystemProperties.ECOMP_REQUEST_ID)) {
@@ -386,7 +370,7 @@
 	 *            HttpServletRequest
 	 * @return Full URL
 	 */
-	public static String getFullURL(HttpServletRequest request) {
+	static String getFullURL(HttpServletRequest request) {
 		if (request != null) {
 			StringBuffer requestURL = request.getRequestURL();
 			String queryString = request.getQueryString();
@@ -402,7 +386,7 @@
 
 	public static Boolean matchRoleFunctions(String portalApiPath, Set<? extends String> roleFunctions) {
 		String[] path = portalApiPath.split("/");
-		List<String> roleFunList = new ArrayList<>();
+		List<String> roleFunList;
 		if (path.length > 1) {
 			roleFunList = roleFunctions.stream().filter(item -> item.startsWith(path[0])).collect(Collectors.toList());
 			if (roleFunList.size() >= 1) {
@@ -411,17 +395,13 @@
 					boolean b = true;
 					if (roleFunctionArray.length == path.length) {
 						for (int i = 0; i < roleFunctionArray.length; i++) {
-							if (b) {
 								if (!roleFunctionArray[i].equals("*")) {
 									Pattern p = Pattern.compile(Pattern.quote(path[i]), Pattern.CASE_INSENSITIVE);
 									Matcher m = p.matcher(roleFunctionArray[i]);
 									b = m.matches();
-
 								}
 							}
-						}
-							if (b)
-								return b;
+						if (b) return true;
 					}
 				}
 			}
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/SchedulerControllerTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/SchedulerControllerTest.java
index b1816ec..5d32301 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/SchedulerControllerTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/portal/controller/SchedulerControllerTest.java
@@ -48,7 +48,6 @@
 import org.apache.poi.ss.formula.functions.T;
 import org.json.simple.JSONObject;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
@@ -56,7 +55,6 @@
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
-import org.onap.portalapp.portal.controller.SchedulerController;
 import org.onap.portalapp.portal.core.MockEPUser;
 import org.onap.portalapp.portal.domain.EPUser;
 import org.onap.portalapp.portal.framework.MockitoTestSuite;
@@ -84,7 +82,7 @@
 	AdminRolesService adminRolesService;
 
 	@InjectMocks
-	SchedulerController schedulerController = new SchedulerController();
+	SchedulerController schedulerController;
 
 	@Before
 	public void setup() {
diff --git a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/util/EPUserUtilsTest.java b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/util/EPUserUtilsTest.java
index 7383330..80ca142 100644
--- a/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/util/EPUserUtilsTest.java
+++ b/ecomp-portal-BE-common/src/test/java/org/onap/portalapp/util/EPUserUtilsTest.java
@@ -256,7 +256,7 @@
 		PowerMockito.when(AppUtils.getSession(mockedRequest)).thenReturn(session);
 		PowerMockito.when(SystemProperties.getProperty(Matchers.anyString())).thenReturn("12");
 		Mockito.when(session.getAttribute(Matchers.anyString())).thenReturn(roles);
-		roles=EPUserUtils.getRoles(mockedRequest);
+		roles= (HashMap) EPUserUtils.getRoles(mockedRequest);
 		assertEquals(roles,expected);
 
 
@@ -279,7 +279,7 @@
 		Mockito.when(session.getAttribute("attr_name")).thenReturn(user);
 		Mockito.when(user.getEPRoles()).thenReturn(role);
 		Mockito.when(session.getAttribute("12")).thenReturn(null);
-		roles=EPUserUtils.getRoles(mockedRequest);
+		roles= (HashMap) EPUserUtils.getRoles(mockedRequest);
 		assertEquals(roles,expected);
 
 	}
@@ -320,7 +320,7 @@
 		Mockito.when(epRole.getChildRoles()).thenReturn(childRoles);
 		Mockito.when(user.getEPUserApps()).thenReturn(epUserApps);
 		Mockito.when(session.getAttribute("12")).thenReturn(null);
-		roles=	EPUserUtils.getRoles(mockedRequest);
+		roles= (HashMap) EPUserUtils.getRoles(mockedRequest);
 		assertNotNull(roles);
 	}
 	
@@ -358,7 +358,7 @@
 		Mockito.when(epRoleFunctionService.getRoleFunctions()).thenReturn(roleFunctions);
 		Mockito.when(MenuBuilder.filterMenu(applicationMenuData, mockedRequest)).thenReturn(applicationMenuData);
 		PowerMockito.when(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME)).thenReturn("12");
-        EPUserUtils.setUserSession(mockedRequest, user, applicationMenuData, businessDirectMenuData, "login_method", epRoleFunctionService);
+        EPUserUtils.setUserSession(mockedRequest, user, applicationMenuData, businessDirectMenuData,  epRoleFunctionService);
         assertNotNull(session);
 
 
@@ -383,7 +383,7 @@
 		Mockito.when(epRoleFunctionService.getRoleFunctions()).thenReturn(null);
 		Mockito.when(MenuBuilder.filterMenu(applicationMenuData, mockedRequest)).thenReturn(applicationMenuData);
 		PowerMockito.when(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME)).thenReturn("12");
-        EPUserUtils.setUserSession(mockedRequest, user, applicationMenuData, businessDirectMenuData, "login_method", epRoleFunctionService);
+        EPUserUtils.setUserSession(mockedRequest, user, applicationMenuData, businessDirectMenuData,  epRoleFunctionService);
         assertNotNull(session);
 	}
 	
@@ -408,7 +408,7 @@
 		Mockito.when(epRoleFunctionService.getRoleFunctions()).thenReturn(null);
 		Mockito.when(MenuBuilder.filterMenu(applicationMenuData, mockedRequest)).thenReturn(applicationMenuData);
 		PowerMockito.when(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME)).thenReturn("12");
-        EPUserUtils.setUserSession(mockedRequest, user, applicationMenuData, businessDirectMenuData, "login_method", epRoleFunctionService);
+        EPUserUtils.setUserSession(mockedRequest, user, applicationMenuData, businessDirectMenuData, epRoleFunctionService);
         assertNotNull(session);
 
 
diff --git a/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/authentication/OpenIdConnectLoginStrategy.java b/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/authentication/OpenIdConnectLoginStrategy.java
index 456f001..f4b8445 100644
--- a/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/authentication/OpenIdConnectLoginStrategy.java
+++ b/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/authentication/OpenIdConnectLoginStrategy.java
@@ -78,7 +78,7 @@
 			user.setLastName(userInfo.getFamilyName());
 			
 			//store the currently logged in user's information in the session
-			EPUserUtils.setUserSession(request, user,  new HashSet(), new HashSet(), SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM),null);
+			EPUserUtils.setUserSession(request, user,  new HashSet(), new HashSet(),null);
 
 			logger.info(EELFLoggerDelegate.errorLogger, request.getContextPath());
 			SessionCookieUtil.preSetUp(request, response);	
diff --git a/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/authentication/SimpleLoginStrategy.java b/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/authentication/SimpleLoginStrategy.java
index a5f8790..79ae20f 100644
--- a/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/authentication/SimpleLoginStrategy.java
+++ b/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/authentication/SimpleLoginStrategy.java
@@ -85,7 +85,7 @@
 			 // in case authentication has passed but user is not in the ONAP data base, return a Guest User to the home page.
 			if (commandBean.getUser() != null) {
 				// store the currently logged in user's information in the session
-				EPUserUtils.setUserSession(request, commandBean.getUser(), commandBean.getMenu(), commandBean.getBusinessDirectMenu(), "", ePRoleFunctionService);
+				EPUserUtils.setUserSession(request, commandBean.getUser(), commandBean.getMenu(), commandBean.getBusinessDirectMenu(), ePRoleFunctionService);
 				logger.info(EELFLoggerDelegate.debugLogger, commandBean.getUser().getOrgUserId() + " exists in the the system.");
 			}
 			
diff --git a/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/controller/LoginController.java b/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/controller/LoginController.java
index 56064b9..3b0281f 100644
--- a/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/controller/LoginController.java
+++ b/ecomp-portal-BE-os/src/main/java/org/onap/portalapp/controller/LoginController.java
@@ -149,8 +149,7 @@
 		} else {
 			// store the currently logged in user's information in the session
 			EPUserUtils.setUserSession(request, commandBean.getUser(), commandBean.getMenu(),
-					commandBean.getBusinessDirectMenu(),
-					SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM), ePRoleFunctionService);
+					commandBean.getBusinessDirectMenu(), ePRoleFunctionService);
 
 			try {
 				logger.info(EELFLoggerDelegate.debugLogger, "loginValidate: store user info into share context begins");
@@ -265,8 +264,7 @@
 						orgUserId);
 
 				EPUserUtils.setUserSession(request, commandBean.getUser(), commandBean.getMenu(),
-						commandBean.getBusinessDirectMenu(),
-						SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM), ePRoleFunctionService);
+						commandBean.getBusinessDirectMenu(), ePRoleFunctionService);
 				logger.info(EELFLoggerDelegate.debugLogger,
 						"processSingleSignOn: now set up user session for {} finished", orgUserId);
 
diff --git a/portal-BE/.gitignore b/portal-BE/.gitignore
new file mode 100644
index 0000000..a2a3040
--- /dev/null
+++ b/portal-BE/.gitignore
@@ -0,0 +1,31 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**
+!**/src/test/**
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+
+### VS Code ###
+.vscode/
diff --git a/portal-BE/.mvn/wrapper/MavenWrapperDownloader.java b/portal-BE/.mvn/wrapper/MavenWrapperDownloader.java
new file mode 100644
index 0000000..72308aa
--- /dev/null
+++ b/portal-BE/.mvn/wrapper/MavenWrapperDownloader.java
@@ -0,0 +1,114 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  https://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.nio.channels.Channels;
+import java.nio.channels.ReadableByteChannel;
+import java.util.Properties;
+
+public class MavenWrapperDownloader {
+
+    /**
+     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
+     */
+    private static final String DEFAULT_DOWNLOAD_URL =
+            "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";
+
+    /**
+     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
+     * use instead of the default one.
+     */
+    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
+            ".mvn/wrapper/maven-wrapper.properties";
+
+    /**
+     * Path where the maven-wrapper.jar will be saved to.
+     */
+    private static final String MAVEN_WRAPPER_JAR_PATH =
+            ".mvn/wrapper/maven-wrapper.jar";
+
+    /**
+     * Name of the property which should be used to override the default download url for the wrapper.
+     */
+    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
+
+    public static void main(String args[]) {
+        System.out.println("- Downloader started");
+        File baseDirectory = new File(args[0]);
+        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
+
+        // If the maven-wrapper.properties exists, read it and check if it contains a custom
+        // wrapperUrl parameter.
+        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
+        String url = DEFAULT_DOWNLOAD_URL;
+        if(mavenWrapperPropertyFile.exists()) {
+            FileInputStream mavenWrapperPropertyFileInputStream = null;
+            try {
+                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
+                Properties mavenWrapperProperties = new Properties();
+                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
+                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
+            } catch (IOException e) {
+                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
+            } finally {
+                try {
+                    if(mavenWrapperPropertyFileInputStream != null) {
+                        mavenWrapperPropertyFileInputStream.close();
+                    }
+                } catch (IOException e) {
+                    // Ignore ...
+                }
+            }
+        }
+        System.out.println("- Downloading from: : " + url);
+
+        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
+        if(!outputFile.getParentFile().exists()) {
+            if(!outputFile.getParentFile().mkdirs()) {
+                System.out.println(
+                        "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
+            }
+        }
+        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
+        try {
+            downloadFileFromURL(url, outputFile);
+            System.out.println("Done");
+            System.exit(0);
+        } catch (Throwable e) {
+            System.out.println("- Error downloading");
+            e.printStackTrace();
+            System.exit(1);
+        }
+    }
+
+    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
+        URL website = new URL(urlString);
+        ReadableByteChannel rbc;
+        rbc = Channels.newChannel(website.openStream());
+        FileOutputStream fos = new FileOutputStream(destination);
+        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+        fos.close();
+        rbc.close();
+    }
+
+}
diff --git a/portal-BE/.mvn/wrapper/maven-wrapper.jar b/portal-BE/.mvn/wrapper/maven-wrapper.jar
new file mode 100644
index 0000000..01e6799
--- /dev/null
+++ b/portal-BE/.mvn/wrapper/maven-wrapper.jar
Binary files differ
diff --git a/portal-BE/.mvn/wrapper/maven-wrapper.properties b/portal-BE/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..cd0d451
--- /dev/null
+++ b/portal-BE/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1 @@
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip
diff --git a/portal-BE/mvnw b/portal-BE/mvnw
new file mode 100755
index 0000000..8b9da3b
--- /dev/null
+++ b/portal-BE/mvnw
@@ -0,0 +1,286 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#    https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Maven2 Start Up Batch script
+#
+# Required ENV vars:
+# ------------------
+#   JAVA_HOME - location of a JDK home dir
+#
+# Optional ENV vars
+# -----------------
+#   M2_HOME - location of maven2's installed home dir
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
+#     e.g. to debug Maven itself, use
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# ----------------------------------------------------------------------------
+
+if [ -z "$MAVEN_SKIP_RC" ] ; then
+
+  if [ -f /etc/mavenrc ] ; then
+    . /etc/mavenrc
+  fi
+
+  if [ -f "$HOME/.mavenrc" ] ; then
+    . "$HOME/.mavenrc"
+  fi
+
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+mingw=false
+case "`uname`" in
+  CYGWIN*) cygwin=true ;;
+  MINGW*) mingw=true;;
+  Darwin*) darwin=true
+    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+    if [ -z "$JAVA_HOME" ]; then
+      if [ -x "/usr/libexec/java_home" ]; then
+        export JAVA_HOME="`/usr/libexec/java_home`"
+      else
+        export JAVA_HOME="/Library/Java/Home"
+      fi
+    fi
+    ;;
+esac
+
+if [ -z "$JAVA_HOME" ] ; then
+  if [ -r /etc/gentoo-release ] ; then
+    JAVA_HOME=`java-config --jre-home`
+  fi
+fi
+
+if [ -z "$M2_HOME" ] ; then
+  ## resolve links - $0 may be a link to maven's home
+  PRG="$0"
+
+  # need this for relative symlinks
+  while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+      PRG="$link"
+    else
+      PRG="`dirname "$PRG"`/$link"
+    fi
+  done
+
+  saveddir=`pwd`
+
+  M2_HOME=`dirname "$PRG"`/..
+
+  # make it fully qualified
+  M2_HOME=`cd "$M2_HOME" && pwd`
+
+  cd "$saveddir"
+  # echo Using m2 at $M2_HOME
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=`cygpath --unix "$M2_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For Mingw, ensure paths are in UNIX format before anything is touched
+if $mingw ; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME="`(cd "$M2_HOME"; pwd)`"
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
+  # TODO classpath?
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+  javaExecutable="`which javac`"
+  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
+    # readlink(1) is not available as standard on Solaris 10.
+    readLink=`which readlink`
+    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
+      if $darwin ; then
+        javaHome="`dirname \"$javaExecutable\"`"
+        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
+      else
+        javaExecutable="`readlink -f \"$javaExecutable\"`"
+      fi
+      javaHome="`dirname \"$javaExecutable\"`"
+      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
+      JAVA_HOME="$javaHome"
+      export JAVA_HOME
+    fi
+  fi
+fi
+
+if [ -z "$JAVACMD" ] ; then
+  if [ -n "$JAVA_HOME"  ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD="`which java`"
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly." >&2
+  echo "  We cannot execute $JAVACMD" >&2
+  exit 1
+fi
+
+if [ -z "$JAVA_HOME" ] ; then
+  echo "Warning: JAVA_HOME environment variable is not set."
+fi
+
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
+
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+
+  if [ -z "$1" ]
+  then
+    echo "Path not specified to find_maven_basedir"
+    return 1
+  fi
+
+  basedir="$1"
+  wdir="$1"
+  while [ "$wdir" != '/' ] ; do
+    if [ -d "$wdir"/.mvn ] ; then
+      basedir=$wdir
+      break
+    fi
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+    if [ -d "${wdir}" ]; then
+      wdir=`cd "$wdir/.."; pwd`
+    fi
+    # end of workaround
+  done
+  echo "${basedir}"
+}
+
+# concatenates all lines of a file
+concat_lines() {
+  if [ -f "$1" ]; then
+    echo "$(tr -s '\n' ' ' < "$1")"
+  fi
+}
+
+BASE_DIR=`find_maven_basedir "$(pwd)"`
+if [ -z "$BASE_DIR" ]; then
+  exit 1;
+fi
+
+##########################################################################################
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
+##########################################################################################
+if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
+    if [ "$MVNW_VERBOSE" = true ]; then
+      echo "Found .mvn/wrapper/maven-wrapper.jar"
+    fi
+else
+    if [ "$MVNW_VERBOSE" = true ]; then
+      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
+    fi
+    jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
+    while IFS="=" read key value; do
+      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
+      esac
+    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
+    if [ "$MVNW_VERBOSE" = true ]; then
+      echo "Downloading from: $jarUrl"
+    fi
+    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
+
+    if command -v wget > /dev/null; then
+        if [ "$MVNW_VERBOSE" = true ]; then
+          echo "Found wget ... using wget"
+        fi
+        wget "$jarUrl" -O "$wrapperJarPath"
+    elif command -v curl > /dev/null; then
+        if [ "$MVNW_VERBOSE" = true ]; then
+          echo "Found curl ... using curl"
+        fi
+        curl -o "$wrapperJarPath" "$jarUrl"
+    else
+        if [ "$MVNW_VERBOSE" = true ]; then
+          echo "Falling back to using Java to download"
+        fi
+        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
+        if [ -e "$javaClass" ]; then
+            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
+                if [ "$MVNW_VERBOSE" = true ]; then
+                  echo " - Compiling MavenWrapperDownloader.java ..."
+                fi
+                # Compiling the Java class
+                ("$JAVA_HOME/bin/javac" "$javaClass")
+            fi
+            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
+                # Running the downloader
+                if [ "$MVNW_VERBOSE" = true ]; then
+                  echo " - Running MavenWrapperDownloader.java ..."
+                fi
+                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
+            fi
+        fi
+    fi
+fi
+##########################################################################################
+# End of extension
+##########################################################################################
+
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
+if [ "$MVNW_VERBOSE" = true ]; then
+  echo $MAVEN_PROJECTBASEDIR
+fi
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=`cygpath --path --windows "$M2_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
+fi
+
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+exec "$JAVACMD" \
+  $MAVEN_OPTS \
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/portal-BE/mvnw.cmd b/portal-BE/mvnw.cmd
new file mode 100644
index 0000000..fef5a8f
--- /dev/null
+++ b/portal-BE/mvnw.cmd
@@ -0,0 +1,161 @@
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements.  See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership.  The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License.  You may obtain a copy of the License at
+@REM
+@REM    https://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied.  See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Maven2 Start Up Batch script
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM M2_HOME - location of maven2's installed home dir
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM     e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM set title of command window
+title %0
+@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
+if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
+FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO (
+	IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B 
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
+if exist %WRAPPER_JAR% (
+    echo Found %WRAPPER_JAR%
+) else (
+    echo Couldn't find %WRAPPER_JAR%, downloading it ...
+	echo Downloading from: %DOWNLOAD_URL%
+    powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"
+    echo Finished downloading %WRAPPER_JAR%
+)
+@REM End of extension
+
+%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
+if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%" == "on" pause
+
+if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
+
+exit /B %ERROR_CODE%
diff --git a/portal-BE/pom.xml b/portal-BE/pom.xml
new file mode 100644
index 0000000..43d0cae
--- /dev/null
+++ b/portal-BE/pom.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.springframework.boot</groupId>
+		<artifactId>spring-boot-starter-parent</artifactId>
+		<version>2.2.0.M4</version>
+		<relativePath/> <!-- lookup parent from repository -->
+	</parent>
+	<groupId>org.onap</groupId>
+	<artifactId>portal</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>portal</name>
+	<description></description>
+
+	<properties>
+		<java.version>1.8</java.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-actuator</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-jpa</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-security</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-thymeleaf</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.session</groupId>
+			<artifactId>spring-session-core</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-aop</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-devtools</artifactId>
+			<scope>runtime</scope>
+			<optional>true</optional>
+		</dependency>
+		<dependency>
+			<groupId>com.h2database</groupId>
+			<artifactId>h2</artifactId>
+			<scope>runtime</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<optional>true</optional>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+			<exclusions>
+				<exclusion>
+					<groupId>org.junit.vintage</groupId>
+					<artifactId>junit-vintage-engine</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>junit</groupId>
+					<artifactId>junit</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.security</groupId>
+			<artifactId>spring-security-test</artifactId>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+
+	<repositories>
+		<repository>
+			<id>spring-milestones</id>
+			<name>Spring Milestones</name>
+			<url>https://repo.spring.io/milestone</url>
+		</repository>
+	</repositories>
+	<pluginRepositories>
+		<pluginRepository>
+			<id>spring-milestones</id>
+			<name>Spring Milestones</name>
+			<url>https://repo.spring.io/milestone</url>
+		</pluginRepository>
+	</pluginRepositories>
+
+</project>
diff --git a/portal-BE/src/main/java/org/onap/portal/PortalApplication.java b/portal-BE/src/main/java/org/onap/portal/PortalApplication.java
new file mode 100644
index 0000000..4a7f4f8
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/PortalApplication.java
@@ -0,0 +1,13 @@
+package org.onap.portal;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class PortalApplication {
+
+	public static void main(String[] args) {
+		SpringApplication.run(PortalApplication.class, args);
+	}
+
+}
diff --git a/portal-BE/src/main/resources/application.properties b/portal-BE/src/main/resources/application.properties
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/portal-BE/src/main/resources/application.properties
@@ -0,0 +1 @@
+
diff --git a/portal-BE/src/test/java/org/onap/portal/PortalApplicationTests.java b/portal-BE/src/test/java/org/onap/portal/PortalApplicationTests.java
new file mode 100644
index 0000000..24871dc
--- /dev/null
+++ b/portal-BE/src/test/java/org/onap/portal/PortalApplicationTests.java
@@ -0,0 +1,13 @@
+package org.onap.portal;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class PortalApplicationTests {
+
+	@Test
+	void contextLoads() {
+	}
+
+}