diff --git a/src/domain/metadata/builders/MetadataPayloadBuilder.ts b/src/domain/metadata/builders/MetadataPayloadBuilder.ts index 7ee4fc5d0..a106f57a4 100644 --- a/src/domain/metadata/builders/MetadataPayloadBuilder.ts +++ b/src/domain/metadata/builders/MetadataPayloadBuilder.ts @@ -45,7 +45,7 @@ export class MetadataPayloadBuilder { includeOnlyOrgUnitsReferences = false, removeUserNonEssentialObjects = false, metadataIncludeExcludeRules = {}, - useDefaultIncludeExclude = {}, + useDefaultIncludeExclude = true, } = syncParams ?? {}; const originInstance = await this.getOriginInstance(originInstanceId); @@ -134,6 +134,7 @@ export class MetadataPayloadBuilder { : []; const removeCategoryObjects = !!syncParams?.removeDefaultCategoryObjects; + const requestedTypes = new Set(_.keys(metadataWithSyncAll)); const finalMetadataPackage = { ...(categories && { categories: this.excludeDefaultMetadataObjects(categories, removeCategoryObjects) }), @@ -147,10 +148,27 @@ export class MetadataPayloadBuilder { categoryOptionCombos: this.excludeDefaultMetadataObjects(categoryOptionCombos, removeCategoryObjects), }), ...(visualizationsWithRows.length > 0 && { visualizations: visualizationsWithRows }), - organisationUnits: includeOrgUnitsObjectsAndReferences ? organisationUnits : undefined, - users: includeUsersObjectsAndReferences ? users : undefined, - userGroups: includeSharingSettingsObjectsAndReferences ? userGroups : undefined, - userRoles: includeSharingSettingsObjectsAndReferences ? userRoles : undefined, + + ...(organisationUnits && + (includeOrgUnitsObjectsAndReferences || requestedTypes.has("organisationUnits")) && { + organisationUnits, + }), + + ...(users && + (includeUsersObjectsAndReferences || requestedTypes.has("users")) && { + users, + }), + + ...(userGroups && + (includeSharingSettingsObjectsAndReferences || requestedTypes.has("userGroups")) && { + userGroups, + }), + + ...(userRoles && + (includeSharingSettingsObjectsAndReferences || requestedTypes.has("userRoles")) && { + userRoles, + }), + ...rest, }; diff --git a/src/domain/metadata/utils.ts b/src/domain/metadata/utils.ts index fc3e27878..de24cf324 100644 --- a/src/domain/metadata/utils.ts +++ b/src/domain/metadata/utils.ts @@ -7,7 +7,7 @@ import { NestedRules } from "./entities/MetadataExcludeIncludeRules"; const blacklistedProperties = ["access"]; const SHARING_SETTINGS_PROPERTIES = ["user", "userAccesses", "userGroupAccesses", "sharing"]; -const USER_PROPERTIES = ["createdBy", "lastUpdatedBy", "user"]; +const USER_PROPERTIES = ["createdBy", "lastUpdatedBy", "user", "users"]; const ORG_UNITS_PROPERTIES = ["organisationUnits"]; export function buildNestedRules(rules: string[][] = []): NestedRules {