diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPAppCommonServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPAppCommonServiceImpl.java
index a4463c7..3d2432c 100644
--- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPAppCommonServiceImpl.java
+++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPAppCommonServiceImpl.java
@@ -1634,7 +1634,11 @@
 	}
 
 	protected String constructImageName(OnboardingApp onboardingApp) {
-		return "portal_" + String.valueOf(onboardingApp.getLandingPage().hashCode() + "_" + (int) (Math.random() * 100000.0))
+		String appLandingPageURL = onboardingApp.getLandingPage();
+		if(appLandingPageURL == null) {
+			appLandingPageURL = "";
+		}
+		return "portal_" + String.valueOf(appLandingPageURL.hashCode() + "_" + (int) (Math.random() * 100000.0))
 				+ ".png";
 	}
 
diff --git a/portal-FE-os/src/app/pages/application-onboarding/application-details-dialog/application-details-dialog.component.ts b/portal-FE-os/src/app/pages/application-onboarding/application-details-dialog/application-details-dialog.component.ts
index 852e970..2e55850 100644
--- a/portal-FE-os/src/app/pages/application-onboarding/application-details-dialog/application-details-dialog.component.ts
+++ b/portal-FE-os/src/app/pages/application-onboarding/application-details-dialog/application-details-dialog.component.ts
@@ -377,6 +377,14 @@
     if (this.isEditMode) {
       console.log("Edit application Object : ", JSON.stringify(this.applicationObj));
       console.log("Mode Of iNtegration : ", this.applicationObj.modeOfIntegration);
+      if (this.applicationObj.applicationType == "1" &&  !this.applicationObj.rolesInAAF 
+        || this.applicationObj.applicationType == "3" &&  !this.applicationObj.rolesInAAF) {
+        this.applicationObj.usesCadi = false;
+      }
+
+      if(this.applicationObj && this.applicationObj.usesCadi){
+        this.applicationObj.appBasicAuthPassword = null;
+      }
       this.applicationsService.updateOnboardingApp(this.applicationObj)
         .subscribe( _data => {
           this.result = _data;
@@ -420,6 +428,14 @@
 
     }else{
       //console.log("Coming inside add application",this.newAppModel);
+      if (this.newAppModel.applicationType == "1" &&  !this.newAppModel.rolesInAAF 
+        || this.newAppModel.applicationType == "3" &&  !this.newAppModel.rolesInAAF) {
+        this.newAppModel.usesCadi = false;
+      }
+
+      if(this.newAppModel && this.newAppModel.usesCadi){
+        this.newAppModel.appBasicAuthPassword = null;
+      }
 
       this.applicationsService.addOnboardingApp(this.newAppModel)
         .subscribe( _data => {
@@ -436,7 +452,7 @@
           console.log(error);
           if(error.status == 409){
             this.openConfirmationModal('Error', 'There was a problem adding the application changes. ' +
-            'The Application Name and URL should  be unique.  Error: ' +
+            'The Application Name and Namespace should  be unique.  Error: ' +
             error.status);
             return;
           } else if(error.status == 500){
