diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/static/js/type.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/static/js/type.ui.js
index bb9f82a7f..1cc3cde88 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/static/js/type.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/static/js/type.ui.js
@@ -1040,21 +1040,24 @@ class CompositeSchema extends BaseUISchema {
 
   validate(state, setError) {
 
-    let errmsg = null;
-
-    if (isEmptyString(state.member_name)) {
-      errmsg = gettext('Please specify the value for member name.');
-      setError('member_name', errmsg);
-      return true;
-    } else if(isEmptyString(state.type)) {
-      errmsg = gettext('Please specify the type.');
-      setError('type', errmsg);
-      return true;
-    }
-    if(_.isUndefined(errmsg) || errmsg == null) {
+    let self = this,
       errmsg = null;
-      setError('member_name', errmsg);
-      setError('type', errmsg);
+
+    if(self.top && self.top.sessData && self.top.sessData.typtype === 'c') {
+      if (isEmptyString(state.member_name)) {
+        errmsg = gettext('Please specify the value for member name.');
+        setError('member_name', errmsg);
+        return true;
+      } else if(isEmptyString(state.type)) {
+        errmsg = gettext('Please specify the type.');
+        setError('type', errmsg);
+        return true;
+      }
+      if(_.isUndefined(errmsg) || errmsg == null) {
+        errmsg = null;
+        setError('member_name', errmsg);
+        setError('type', errmsg);
+      }
     }
     return false;
   }
@@ -1286,7 +1289,7 @@ export default class TypeSchema extends BaseUISchema {
       ...fieldOptions
     };
     this.getPrivilegeRoleSchema = getPrivilegeRoleSchema;
-    this.getCompositeSchema = getCompositeSchema;
+    this.compositeSchema = getCompositeSchema(); // create only once the composite schema to avoid initializing the current (i.e. top)
     this.getRangeSchema = getRangeSchema;
     this.getExternalSchema = getExternalSchema;
     this.getDataTypeSchema = getDataTypeSchema;
@@ -1409,8 +1412,13 @@ export default class TypeSchema extends BaseUISchema {
       uniqueCol : ['member_name'],
       canAdd: true,  canEdit: false, canDelete: true,
       disabled: () => obj.inCatalog(),
-      schema: obj.getCompositeSchema(),
+      schema: obj.compositeSchema,
       deps: ['typtype'],
+      depChange: (state)=>{
+        if(_.isArray(state.composite) && state.composite.length > 0 && state.typtype !== 'c') {
+          state.composite.splice(0, state.composite.length);
+        }
+      },
       visible: (state) => {
         return state.typtype === 'c';
       },
@@ -1658,7 +1666,7 @@ export default class TypeSchema extends BaseUISchema {
         if (state.typtype === 'p') {
           var secLabs = state.seclabels;
           if(secLabs && secLabs.length > 0)
-            secLabs.reset();
+            secLabs.splice(0, secLabs.length);
         }
         return (state.typtype !== 'p');
       },
diff --git a/web/regression/javascript/schema_ui_files/type.ui.spec.js b/web/regression/javascript/schema_ui_files/type.ui.spec.js
index 70188aca8..bb648780b 100644
--- a/web/regression/javascript/schema_ui_files/type.ui.spec.js
+++ b/web/regression/javascript/schema_ui_files/type.ui.spec.js
@@ -96,6 +96,9 @@ describe('TypeSchema', ()=>{
     it('composite validate', () => {
       let state = { typtype: 'b' }; //validating for ExternalSchema which is distinguish as r
       let setError = jasmine.createSpy('setError');
+      compositeCollObj.top = {
+        'sessData': { 'typtype':'c' }
+      };
 
       compositeCollObj.validate(state, setError);
       expect(setError).toHaveBeenCalledWith('member_name', 'Please specify the value for member name.');
