diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js index 5e4a8cad5..95e2771af 100644 --- a/lib/metadataTypes/DataExtension.js +++ b/lib/metadataTypes/DataExtension.js @@ -28,24 +28,14 @@ class DataExtension extends MetadataType { */ static async upsert(metadataMap) { // get existing DE-fields for DE-keys in deployment package to properly handle add/update/delete of fields - const fieldOptions = {}; - for (const key of Object.keys(metadataMap)) { - fieldOptions.filter = fieldOptions.filter - ? { - leftOperand: { - leftOperand: 'DataExtension.CustomerKey', - operator: 'equals', - rightOperand: key, - }, - operator: 'OR', - rightOperand: fieldOptions.filter, - } - : { - leftOperand: 'DataExtension.CustomerKey', - operator: 'equals', - rightOperand: key, - }; - } + // we need to use IN here because it would fail otherwise if we try to deploy too many DEs at the same time + const fieldOptions = { + filter: { + leftOperand: 'DataExtension.CustomerKey', + operator: 'IN', + rightOperand: Object.keys(metadataMap), + }, + }; Util.logger.info(` - Caching dependent Metadata: dataExtensionField`); await this.#attachFields(metadataMap, fieldOptions); @@ -868,6 +858,7 @@ class DataExtension extends MetadataType { static async #attachFields(metadata, fieldOptions, additionalFields) { const fieldsObj = await this._retrieveFields(fieldOptions, additionalFields); const fieldKeys = Object.keys(fieldsObj); + // add fields to corresponding DE for (const key of fieldKeys) { const field = fieldsObj[key];