mcdev 7.2.0 → 7.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug.yml +1 -0
- package/.vscode/settings.json +1 -1
- package/@types/lib/Builder.d.ts +4 -4
- package/@types/lib/Builder.d.ts.map +1 -1
- package/@types/lib/index.d.ts +26 -13
- package/@types/lib/index.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Event.d.ts +52 -4
- package/@types/lib/metadataTypes/Event.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Journey.d.ts +2 -3
- package/@types/lib/metadataTypes/Journey.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MetadataType.d.ts +7 -0
- package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -1
- package/@types/lib/metadataTypes/SendClassification.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TriggeredSend.d.ts.map +1 -1
- package/@types/types/mcdev.d.d.ts +123 -0
- package/@types/types/mcdev.d.d.ts.map +1 -1
- package/boilerplate/files/.vscode/settings.json +2 -3
- package/boilerplate/forcedUpdates.json +4 -0
- package/eslint.config.js +1 -1
- package/lib/Builder.js +45 -26
- package/lib/cli.js +67 -5
- package/lib/index.js +117 -48
- package/lib/metadataTypes/Asset.js +1 -1
- package/lib/metadataTypes/Automation.js +5 -5
- package/lib/metadataTypes/DataExtract.js +1 -1
- package/lib/metadataTypes/Event.js +525 -5
- package/lib/metadataTypes/FileTransfer.js +1 -1
- package/lib/metadataTypes/ImportFile.js +1 -1
- package/lib/metadataTypes/Journey.js +144 -33
- package/lib/metadataTypes/MetadataType.js +16 -2
- package/lib/metadataTypes/MobileKeyword.js +1 -1
- package/lib/metadataTypes/Query.js +1 -1
- package/lib/metadataTypes/Script.js +1 -1
- package/lib/metadataTypes/SendClassification.js +10 -8
- package/lib/metadataTypes/TriggeredSend.js +18 -16
- package/lib/metadataTypes/definitions/DataExtension.definition.js +4 -4
- package/lib/metadataTypes/definitions/EmailSend.definition.js +4 -4
- package/lib/metadataTypes/definitions/Event.definition.js +92 -92
- package/lib/metadataTypes/definitions/Journey.definition.js +1 -0
- package/lib/metadataTypes/definitions/Role.definition.js +4 -4
- package/lib/metadataTypes/definitions/SendClassification.definition.js +7 -7
- package/lib/metadataTypes/definitions/SenderProfile.definition.js +4 -4
- package/lib/metadataTypes/definitions/TriggeredSend.definition.js +11 -11
- package/package.json +1 -1
- package/test/general.test.js +20 -20
- package/test/mockRoot/.mcdevrc.json +1 -1
- package/test/resourceFactory.js +5 -1
- package/test/resources/9999999/dataExtension/update-callout-afterCreatedViaEvent-expected.xml +1 -1
- package/test/resources/9999999/sendClassification/create-response.xml +1 -1
- package/test/resources/9999999/sendClassification/retrieve-response.xml +2 -2
- package/test/resources/9999999/sendClassification/update-response.xml +1 -1
- package/test/resources/9999999/triggeredSendDefinition/create-response.xml +2 -2
- package/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml +4 -4
- package/test/resources/9999999/triggeredSendDefinition/update-response.xml +2 -2
- package/test/type.asset.test.js +3 -3
- package/test/type.automation.test.js +4 -4
- package/test/type.dataExtension.test.js +3 -3
- package/test/type.dataExtract.test.js +3 -3
- package/test/type.emailSend.test.js +2 -2
- package/test/type.event.test.js +3 -3
- package/test/type.fileTransfer.test.js +3 -3
- package/test/type.importFile.test.js +3 -3
- package/test/type.journey.test.js +19 -5
- package/test/type.mobileKeyword.test.js +2 -2
- package/test/type.mobileMessage.test.js +2 -2
- package/test/type.query.test.js +3 -3
- package/test/type.script.test.js +4 -4
- package/test/type.sendClassification.test.js +2 -2
- package/test/type.senderProfile.test.js +3 -3
- package/test/type.transactionalEmail.test.js +2 -2
- package/test/type.transactionalPush.test.js +2 -2
- package/test/type.transactionalSMS.test.js +2 -2
- package/test/type.triggeredSend.test.js +3 -3
- package/test/type.user.test.js +2 -2
- package/test/type.verification.test.js +2 -2
- package/types/mcdev.d.js +37 -0
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import MetadataType from './MetadataType.js';
|
|
4
4
|
import TransactionalEmail from './TransactionalEmail.js';
|
|
5
|
+
import Event from './Event.js';
|
|
5
6
|
import { Util } from '../util/util.js';
|
|
6
7
|
import cache from '../util/cache.js';
|
|
7
8
|
import File from '../util/file.js';
|
|
8
9
|
import ReplaceCbReference from '../util/replaceContentBlockReference.js';
|
|
9
10
|
import Retriever from '../Retriever.js';
|
|
11
|
+
import pLimit from 'p-limit';
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* @typedef {import('../../types/mcdev.d.js').BuObject} BuObject
|
|
@@ -235,7 +237,7 @@ class Journey extends MetadataType {
|
|
|
235
237
|
);
|
|
236
238
|
const results = this.parseResponseBody(response, key);
|
|
237
239
|
singleKey = results[key].id;
|
|
238
|
-
if (version && version > results[key].version) {
|
|
240
|
+
if (version && version !== '*' && version > results[key].version) {
|
|
239
241
|
Util.logger.error(
|
|
240
242
|
`The chosen version (${version}) is higher than the latest known version (${results[key].version}). Please choose a lower version.`
|
|
241
243
|
);
|
|
@@ -243,20 +245,24 @@ class Journey extends MetadataType {
|
|
|
243
245
|
}
|
|
244
246
|
Util.logger.debug(`Deleting interaction ${key} via its ID ${singleKey}`);
|
|
245
247
|
}
|
|
246
|
-
if (
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
key +
|
|
250
|
-
|
|
248
|
+
if (version !== '*') {
|
|
249
|
+
if (!/^\d+$/.test(version)) {
|
|
250
|
+
Util.logger.error(
|
|
251
|
+
'Version is required for deleting interactions to avoid accidental deletion of the wrong item. Please append it at the end of the key or id, separated by forward-slash. Example for deleting version 4: ' +
|
|
252
|
+
key +
|
|
253
|
+
'/4'
|
|
254
|
+
);
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
Util.logger.warn(
|
|
258
|
+
`Deleting Journeys via this command breaks following retrieve-by-key/id requests until you've deployed/created a new draft version! You can get still get the latest available version of your journey by retrieving all interactions on this BU.`
|
|
251
259
|
);
|
|
252
|
-
return false;
|
|
253
260
|
}
|
|
254
|
-
Util.logger.warn(
|
|
255
|
-
`Deleting Journeys via this command breaks following retrieve-by-key/id requests until you've deployed/created a new draft version! You can get still get the latest available version of your journey by retrieving all interactions on this BU.`
|
|
256
|
-
);
|
|
257
261
|
|
|
258
262
|
return super.deleteByKeyREST(
|
|
259
|
-
'/interaction/v1/interactions/' +
|
|
263
|
+
'/interaction/v1/interactions/' +
|
|
264
|
+
singleKey +
|
|
265
|
+
(version === '*' ? '' : `?versionNumber=${version}`),
|
|
260
266
|
key,
|
|
261
267
|
false
|
|
262
268
|
);
|
|
@@ -342,12 +348,11 @@ class Journey extends MetadataType {
|
|
|
342
348
|
|
|
343
349
|
/**
|
|
344
350
|
* manages post retrieve steps
|
|
345
|
-
* ! BETA RELEASE of journey support (v4.3.0); it so far only resolves a limited amount of dependencies and will likely break during cross-BU deployments!
|
|
346
351
|
*
|
|
347
352
|
* @param {MetadataTypeItem} metadata a single item
|
|
348
|
-
* @returns {MetadataTypeItem} Array with one metadata object
|
|
353
|
+
* @returns {Promise.<MetadataTypeItem>} Array with one metadata object
|
|
349
354
|
*/
|
|
350
|
-
static postRetrieveTasks(metadata) {
|
|
355
|
+
static async postRetrieveTasks(metadata) {
|
|
351
356
|
// folder
|
|
352
357
|
super.setFolderPath(metadata);
|
|
353
358
|
|
|
@@ -408,6 +413,18 @@ class Journey extends MetadataType {
|
|
|
408
413
|
}
|
|
409
414
|
}
|
|
410
415
|
}
|
|
416
|
+
try {
|
|
417
|
+
await Event.postRetrieveTasks_SalesforceEntryEvents(
|
|
418
|
+
metadata.triggers[0].type,
|
|
419
|
+
metadata.triggers[0].configurationArguments,
|
|
420
|
+
metadata.key,
|
|
421
|
+
this.definition.type
|
|
422
|
+
);
|
|
423
|
+
} catch (ex) {
|
|
424
|
+
Util.logger.warn(
|
|
425
|
+
` - ${this.definition.type} '${metadata[this.definition.nameField]}' (${metadata[this.definition.keyField]}): ${ex.message}`
|
|
426
|
+
);
|
|
427
|
+
}
|
|
411
428
|
}
|
|
412
429
|
// ~~~ ACTIVITIES ~~~~
|
|
413
430
|
|
|
@@ -588,6 +605,15 @@ class Journey extends MetadataType {
|
|
|
588
605
|
);
|
|
589
606
|
}
|
|
590
607
|
}
|
|
608
|
+
if (
|
|
609
|
+
configurationArguments?.triggeredSend &&
|
|
610
|
+
'string' === typeof configurationArguments?.triggeredSend
|
|
611
|
+
) {
|
|
612
|
+
// sometimes, the API returns this object as a string for unknown reasons. Good job, product team!
|
|
613
|
+
configurationArguments.triggeredSend = JSON.parse(
|
|
614
|
+
configurationArguments?.triggeredSend
|
|
615
|
+
);
|
|
616
|
+
}
|
|
591
617
|
const triggeredSend = configurationArguments?.triggeredSend;
|
|
592
618
|
if (triggeredSend) {
|
|
593
619
|
// this section is likely only relevant for QuickSends and not for Multi-Step Journeys
|
|
@@ -617,36 +643,34 @@ class Journey extends MetadataType {
|
|
|
617
643
|
|
|
618
644
|
if (linkedTS.SenderProfile?.CustomerKey) {
|
|
619
645
|
try {
|
|
620
|
-
cache.searchForField(
|
|
646
|
+
const spKey = cache.searchForField(
|
|
621
647
|
'senderProfile',
|
|
622
|
-
linkedTS.SenderProfile.
|
|
623
|
-
'
|
|
648
|
+
linkedTS.SenderProfile.ObjectID,
|
|
649
|
+
'ObjectID',
|
|
624
650
|
'CustomerKey'
|
|
625
651
|
);
|
|
626
|
-
triggeredSend.r__senderProfile_key =
|
|
627
|
-
linkedTS.SenderProfile.CustomerKey;
|
|
652
|
+
triggeredSend.r__senderProfile_key = spKey;
|
|
628
653
|
delete triggeredSend.senderProfileId;
|
|
629
654
|
} catch (ex) {
|
|
630
655
|
Util.logger.warn(
|
|
631
|
-
` -
|
|
656
|
+
` - triggeredSend ${linkedTS.CustomerKey}: ${ex.message} (senderProfile key ${linkedTS.SenderProfile.CustomerKey})`
|
|
632
657
|
);
|
|
633
658
|
}
|
|
634
659
|
}
|
|
635
660
|
// send classification
|
|
636
661
|
if (linkedTS.SendClassification?.CustomerKey) {
|
|
637
662
|
try {
|
|
638
|
-
cache.searchForField(
|
|
663
|
+
const scKey = cache.searchForField(
|
|
639
664
|
'sendClassification',
|
|
640
|
-
linkedTS.SendClassification.
|
|
641
|
-
'
|
|
665
|
+
linkedTS.SendClassification.ObjectID,
|
|
666
|
+
'ObjectID',
|
|
642
667
|
'CustomerKey'
|
|
643
668
|
);
|
|
644
|
-
triggeredSend.r__sendClassification_key =
|
|
645
|
-
linkedTS.SendClassification.CustomerKey;
|
|
669
|
+
triggeredSend.r__sendClassification_key = scKey;
|
|
646
670
|
delete triggeredSend.sendClassificationId;
|
|
647
671
|
} catch (ex) {
|
|
648
672
|
Util.logger.warn(
|
|
649
|
-
` -
|
|
673
|
+
` - triggeredSend ${linkedTS.CustomerKey}: ${ex.message} (sendClassification key ${linkedTS.SendClassification.CustomerKey})`
|
|
650
674
|
);
|
|
651
675
|
}
|
|
652
676
|
}
|
|
@@ -1010,6 +1034,10 @@ class Journey extends MetadataType {
|
|
|
1010
1034
|
delete config.r__dataExtension_key;
|
|
1011
1035
|
}
|
|
1012
1036
|
}
|
|
1037
|
+
Event.preDeployTasks_SalesforceEntryEvents(
|
|
1038
|
+
metadata.triggers[0].type,
|
|
1039
|
+
metadata.triggers[0].configurationArguments
|
|
1040
|
+
);
|
|
1013
1041
|
}
|
|
1014
1042
|
|
|
1015
1043
|
// transactionalEmail / definitionType==='Transactional' && channel==='email' && triggers[].type === 'transactional-api'
|
|
@@ -1018,13 +1046,6 @@ class Journey extends MetadataType {
|
|
|
1018
1046
|
|
|
1019
1047
|
this._preDeployTasks_activities(metadata);
|
|
1020
1048
|
|
|
1021
|
-
// TODO: Filters / activities[].type === 'MULTICRITERIADECISION'
|
|
1022
|
-
// - activities[].arguments.filterResult
|
|
1023
|
-
// - activities[].arguments.configurationArguments.criteria
|
|
1024
|
-
|
|
1025
|
-
// TODO: wait activity / activities[].type === 'WAIT'
|
|
1026
|
-
|
|
1027
|
-
// TODO: journey template id? / metaData.templateId
|
|
1028
1049
|
break;
|
|
1029
1050
|
}
|
|
1030
1051
|
case 'Transactional': {
|
|
@@ -1837,6 +1858,96 @@ class Journey extends MetadataType {
|
|
|
1837
1858
|
Util.logger.warn(' ' + msg);
|
|
1838
1859
|
}
|
|
1839
1860
|
}
|
|
1861
|
+
/**
|
|
1862
|
+
* stops latest journey version
|
|
1863
|
+
*
|
|
1864
|
+
* @param {string[]} keyArr customerkey of the metadata
|
|
1865
|
+
* @returns {Promise.<string[]>} Returns list of keys that were paused
|
|
1866
|
+
*/
|
|
1867
|
+
static async stop(keyArr) {
|
|
1868
|
+
let version;
|
|
1869
|
+
const endpoint = '/interaction/v1/interactions/stop/';
|
|
1870
|
+
const stoppedKeyArr = [];
|
|
1871
|
+
const apiLimit = pLimit(20);
|
|
1872
|
+
const journeyCache = await this.retrieveForCache();
|
|
1873
|
+
|
|
1874
|
+
await Promise.allSettled(
|
|
1875
|
+
keyArr.map((key) =>
|
|
1876
|
+
apiLimit(async () => {
|
|
1877
|
+
[key, version] = key.split('/');
|
|
1878
|
+
if (journeyCache.metadata[key]) {
|
|
1879
|
+
version ||= journeyCache.metadata[key].version;
|
|
1880
|
+
if (version === '*') {
|
|
1881
|
+
Util.logger.warn(
|
|
1882
|
+
` ☇ skipping ${this.definition.type} ${key}: Cannot stop all versions at once. The highest version is ${journeyCache.metadata[key].version}`
|
|
1883
|
+
);
|
|
1884
|
+
return;
|
|
1885
|
+
}
|
|
1886
|
+
try {
|
|
1887
|
+
await this.client.rest.post(
|
|
1888
|
+
endpoint +
|
|
1889
|
+
journeyCache.metadata[key].id +
|
|
1890
|
+
`?versionNumber=${version}`,
|
|
1891
|
+
{}
|
|
1892
|
+
);
|
|
1893
|
+
Util.logger.info(
|
|
1894
|
+
` - Stopped ${this.definition.type} ${key}/${version}`
|
|
1895
|
+
);
|
|
1896
|
+
stoppedKeyArr.push(key);
|
|
1897
|
+
} catch (ex) {
|
|
1898
|
+
Util.logger.error(
|
|
1899
|
+
` - Stopping ${this.definition.type} ${key} failed: ${ex.message}`
|
|
1900
|
+
);
|
|
1901
|
+
}
|
|
1902
|
+
}
|
|
1903
|
+
})
|
|
1904
|
+
)
|
|
1905
|
+
);
|
|
1906
|
+
|
|
1907
|
+
return stoppedKeyArr;
|
|
1908
|
+
}
|
|
1909
|
+
/**
|
|
1910
|
+
* pauses all journey versions
|
|
1911
|
+
*
|
|
1912
|
+
* @param {string[]} keyArr customerkey of the metadata
|
|
1913
|
+
* @returns {Promise.<string[]>} Returns list of keys that were paused
|
|
1914
|
+
*/
|
|
1915
|
+
static async pause(keyArr) {
|
|
1916
|
+
let version;
|
|
1917
|
+
const endpoint = '/interaction/v1/interactions/pause/';
|
|
1918
|
+
const stoppedKeyArr = [];
|
|
1919
|
+
const apiLimit = pLimit(20);
|
|
1920
|
+
const journeyCache = await this.retrieveForCache();
|
|
1921
|
+
|
|
1922
|
+
await Promise.allSettled(
|
|
1923
|
+
keyArr.map((key) =>
|
|
1924
|
+
apiLimit(async () => {
|
|
1925
|
+
[key, version] = key.split('/');
|
|
1926
|
+
if (journeyCache.metadata[key]) {
|
|
1927
|
+
version ||= journeyCache.metadata[key].version;
|
|
1928
|
+
try {
|
|
1929
|
+
await this.client.rest.post(
|
|
1930
|
+
endpoint +
|
|
1931
|
+
journeyCache.metadata[key].id +
|
|
1932
|
+
(version === '*'
|
|
1933
|
+
? '?allVersions=true'
|
|
1934
|
+
: `?versionNumber=${version}`),
|
|
1935
|
+
{}
|
|
1936
|
+
);
|
|
1937
|
+
Util.logger.info(` - Paused ${this.definition.type} ${key}/${version}`);
|
|
1938
|
+
stoppedKeyArr.push(key);
|
|
1939
|
+
} catch (ex) {
|
|
1940
|
+
Util.logger.error(
|
|
1941
|
+
` - Pausing ${this.definition.type} ${key} failed: ${ex.message}`
|
|
1942
|
+
);
|
|
1943
|
+
}
|
|
1944
|
+
}
|
|
1945
|
+
})
|
|
1946
|
+
)
|
|
1947
|
+
);
|
|
1948
|
+
|
|
1949
|
+
return stoppedKeyArr;
|
|
1950
|
+
}
|
|
1840
1951
|
}
|
|
1841
1952
|
|
|
1842
1953
|
// Assign definition to static attributes
|
|
@@ -622,6 +622,19 @@ class MetadataType {
|
|
|
622
622
|
return [];
|
|
623
623
|
}
|
|
624
624
|
|
|
625
|
+
/**
|
|
626
|
+
* Abstract stop method that needs to be implemented in child metadata type
|
|
627
|
+
*
|
|
628
|
+
* @param {string[]} keyArr customerkey of the metadata
|
|
629
|
+
* @returns {Promise.<string[]>} Returns list of keys that were stopped
|
|
630
|
+
*/
|
|
631
|
+
static async stop(keyArr) {
|
|
632
|
+
Util.logger.error(
|
|
633
|
+
` ☇ skipping ${this.definition.type}: stop is not supported yet for ${this.definition.type}`
|
|
634
|
+
);
|
|
635
|
+
return [];
|
|
636
|
+
}
|
|
637
|
+
|
|
625
638
|
/**
|
|
626
639
|
* test if metadata was actually changed or not to potentially skip it during deployment
|
|
627
640
|
*
|
|
@@ -1899,9 +1912,10 @@ class MetadataType {
|
|
|
1899
1912
|
templateVariables
|
|
1900
1913
|
);
|
|
1901
1914
|
} catch (ex) {
|
|
1915
|
+
Util.logger.debug(JSON.stringify(savedResults[originalKey]));
|
|
1902
1916
|
Util.logger.errorStack(
|
|
1903
1917
|
ex,
|
|
1904
|
-
` - Saving ${this.definition.type} ${originalKey} failed`
|
|
1918
|
+
` - Saving ${this.definition.type} ${originalKey} / ${results[originalKey][this.definition.nameField]} failed`
|
|
1905
1919
|
);
|
|
1906
1920
|
}
|
|
1907
1921
|
}
|
|
@@ -2349,7 +2363,7 @@ class MetadataType {
|
|
|
2349
2363
|
? `${ex.results[0].StatusMessage} (Code ${ex.results[0].ErrorCode})`
|
|
2350
2364
|
: ex.message;
|
|
2351
2365
|
Util.logger.error(
|
|
2352
|
-
|
|
2366
|
+
` - Deleting ${this.definition.type} '${customerKey}' failed: ${errorMsg}`
|
|
2353
2367
|
);
|
|
2354
2368
|
}
|
|
2355
2369
|
|
|
@@ -537,7 +537,7 @@ class MobileKeyword extends MetadataType {
|
|
|
537
537
|
// get id from cache
|
|
538
538
|
const { metadata } = await this.retrieveForCache(undefined, undefined, key);
|
|
539
539
|
if (!metadata[key]) {
|
|
540
|
-
Util.logger.error(`
|
|
540
|
+
Util.logger.error(` - mobileKeyword ${key} not found`);
|
|
541
541
|
return false;
|
|
542
542
|
}
|
|
543
543
|
const id = metadata[key][this.definition.idField];
|
|
@@ -456,7 +456,7 @@ class Query extends MetadataType {
|
|
|
456
456
|
// delete only works with the query's object id
|
|
457
457
|
const objectId = customerKey ? await this._getObjectIdForSingleRetrieve(customerKey) : null;
|
|
458
458
|
if (!objectId) {
|
|
459
|
-
Util.logger.error(` - query not found`);
|
|
459
|
+
Util.logger.error(` - query ${customerKey} not found`);
|
|
460
460
|
return false;
|
|
461
461
|
}
|
|
462
462
|
return super.deleteByKeyREST('/automation/v1/queries/' + objectId, customerKey);
|
|
@@ -379,7 +379,7 @@ class Script extends MetadataType {
|
|
|
379
379
|
// delete only works with the query's object id
|
|
380
380
|
const objectId = customerKey ? await this._getObjectIdForSingleRetrieve(customerKey) : null;
|
|
381
381
|
if (!objectId) {
|
|
382
|
-
Util.logger.error(` - ${this.definition.type} not found`);
|
|
382
|
+
Util.logger.error(` - ${this.definition.type} ${customerKey} not found`);
|
|
383
383
|
return false;
|
|
384
384
|
}
|
|
385
385
|
return super.deleteByKeyREST('/automation/v1/scripts/' + objectId, customerKey);
|
|
@@ -88,13 +88,15 @@ class SendClassification extends MetadataType {
|
|
|
88
88
|
this.definition.sendClassificationTypeMapping[metadata.c__classification];
|
|
89
89
|
delete metadata.c__classification;
|
|
90
90
|
|
|
91
|
+
const spId = cache.searchForField(
|
|
92
|
+
'senderProfile',
|
|
93
|
+
metadata.r__senderProfile_key,
|
|
94
|
+
'CustomerKey',
|
|
95
|
+
'ObjectID'
|
|
96
|
+
);
|
|
91
97
|
metadata.SenderProfile = {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
metadata.r__senderProfile_key,
|
|
95
|
-
'CustomerKey',
|
|
96
|
-
'CustomerKey'
|
|
97
|
-
),
|
|
98
|
+
ObjectID: spId,
|
|
99
|
+
CustomerKey: metadata.r__senderProfile_key,
|
|
98
100
|
};
|
|
99
101
|
delete metadata.r__senderProfile_key;
|
|
100
102
|
|
|
@@ -127,8 +129,8 @@ class SendClassification extends MetadataType {
|
|
|
127
129
|
try {
|
|
128
130
|
metadata.r__senderProfile_key = cache.searchForField(
|
|
129
131
|
'senderProfile',
|
|
130
|
-
metadata.SenderProfile.
|
|
131
|
-
'
|
|
132
|
+
metadata.SenderProfile.ObjectID,
|
|
133
|
+
'ObjectID',
|
|
132
134
|
'CustomerKey'
|
|
133
135
|
);
|
|
134
136
|
delete metadata.SenderProfile;
|
|
@@ -168,36 +168,36 @@ class TriggeredSend extends MetadataType {
|
|
|
168
168
|
}
|
|
169
169
|
|
|
170
170
|
// sender profile
|
|
171
|
-
if (metadata.SenderProfile?.
|
|
171
|
+
if (metadata.SenderProfile?.ObjectID) {
|
|
172
172
|
try {
|
|
173
|
-
cache.searchForField(
|
|
173
|
+
const spKey = cache.searchForField(
|
|
174
174
|
'senderProfile',
|
|
175
|
-
metadata.SenderProfile.
|
|
176
|
-
'
|
|
175
|
+
metadata.SenderProfile.ObjectID,
|
|
176
|
+
'ObjectID',
|
|
177
177
|
'CustomerKey'
|
|
178
178
|
);
|
|
179
|
-
metadata.r__senderProfile_key =
|
|
179
|
+
metadata.r__senderProfile_key = spKey;
|
|
180
180
|
delete metadata.SenderProfile;
|
|
181
181
|
} catch (ex) {
|
|
182
182
|
Util.logger.warn(
|
|
183
|
-
` - ${this.definition.type} ${metadata.CustomerKey}: ${ex.message}`
|
|
183
|
+
` - ${this.definition.type} ${metadata.CustomerKey}: ${ex.message} (senderProfile key ${metadata.SenderProfile.CustomerKey})`
|
|
184
184
|
);
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
187
|
// send classification
|
|
188
|
-
if (metadata.SendClassification?.
|
|
188
|
+
if (metadata.SendClassification?.ObjectID) {
|
|
189
189
|
try {
|
|
190
|
-
cache.searchForField(
|
|
190
|
+
const scKey = cache.searchForField(
|
|
191
191
|
'sendClassification',
|
|
192
|
-
metadata.SendClassification.
|
|
193
|
-
'
|
|
192
|
+
metadata.SendClassification.ObjectID,
|
|
193
|
+
'ObjectID',
|
|
194
194
|
'CustomerKey'
|
|
195
195
|
);
|
|
196
|
-
metadata.r__sendClassification_key =
|
|
196
|
+
metadata.r__sendClassification_key = scKey;
|
|
197
197
|
delete metadata.SendClassification;
|
|
198
198
|
} catch (ex) {
|
|
199
199
|
Util.logger.warn(
|
|
200
|
-
` - ${this.definition.type} ${metadata.CustomerKey}: ${ex.message}`
|
|
200
|
+
` - ${this.definition.type} ${metadata.CustomerKey}: ${ex.message} (sendClassification key ${metadata.SendClassification.CustomerKey})`
|
|
201
201
|
);
|
|
202
202
|
}
|
|
203
203
|
}
|
|
@@ -268,26 +268,28 @@ class TriggeredSend extends MetadataType {
|
|
|
268
268
|
}
|
|
269
269
|
// sender profile
|
|
270
270
|
if (metadata.r__senderProfile_key) {
|
|
271
|
-
cache.searchForField(
|
|
271
|
+
const spId = cache.searchForField(
|
|
272
272
|
'senderProfile',
|
|
273
273
|
metadata.r__senderProfile_key,
|
|
274
274
|
'CustomerKey',
|
|
275
|
-
'
|
|
275
|
+
'ObjectID'
|
|
276
276
|
);
|
|
277
277
|
metadata.SenderProfile = {
|
|
278
|
+
ObjectID: spId,
|
|
278
279
|
CustomerKey: metadata.r__senderProfile_key,
|
|
279
280
|
};
|
|
280
281
|
delete metadata.r__senderProfile_key;
|
|
281
282
|
}
|
|
282
283
|
// send classification
|
|
283
284
|
if (metadata.r__sendClassification_key) {
|
|
284
|
-
cache.searchForField(
|
|
285
|
+
const scId = cache.searchForField(
|
|
285
286
|
'sendClassification',
|
|
286
287
|
metadata.r__sendClassification_key,
|
|
287
288
|
'CustomerKey',
|
|
288
|
-
'
|
|
289
|
+
'ObjectID'
|
|
289
290
|
);
|
|
290
291
|
metadata.SendClassification = {
|
|
292
|
+
ObjectID: scId,
|
|
291
293
|
CustomerKey: metadata.r__sendClassification_key,
|
|
292
294
|
};
|
|
293
295
|
delete metadata.r__sendClassification_key;
|
|
@@ -123,8 +123,8 @@ export default {
|
|
|
123
123
|
template: false,
|
|
124
124
|
},
|
|
125
125
|
CreatedDate: {
|
|
126
|
-
isCreateable:
|
|
127
|
-
isUpdateable:
|
|
126
|
+
isCreateable: true,
|
|
127
|
+
isUpdateable: true,
|
|
128
128
|
retrieving: true,
|
|
129
129
|
template: false,
|
|
130
130
|
},
|
|
@@ -189,8 +189,8 @@ export default {
|
|
|
189
189
|
template: true,
|
|
190
190
|
},
|
|
191
191
|
ModifiedDate: {
|
|
192
|
-
isCreateable:
|
|
193
|
-
isUpdateable:
|
|
192
|
+
isCreateable: true,
|
|
193
|
+
isUpdateable: true,
|
|
194
194
|
retrieving: true,
|
|
195
195
|
template: false,
|
|
196
196
|
},
|
|
@@ -81,8 +81,8 @@ export default {
|
|
|
81
81
|
templating: false,
|
|
82
82
|
},
|
|
83
83
|
CreatedDate: {
|
|
84
|
-
isCreateable:
|
|
85
|
-
isUpdateable:
|
|
84
|
+
isCreateable: true,
|
|
85
|
+
isUpdateable: true,
|
|
86
86
|
retrieving: true,
|
|
87
87
|
templating: false,
|
|
88
88
|
},
|
|
@@ -333,8 +333,8 @@ export default {
|
|
|
333
333
|
templating: false,
|
|
334
334
|
},
|
|
335
335
|
ModifiedDate: {
|
|
336
|
-
isCreateable:
|
|
337
|
-
isUpdateable:
|
|
336
|
+
isCreateable: true,
|
|
337
|
+
isUpdateable: true,
|
|
338
338
|
retrieving: true,
|
|
339
339
|
templating: false,
|
|
340
340
|
},
|