Skip to content

Releases: Accenture/sfmc-devtools

v7.1.3

02 Aug 15:47
Compare
Choose a tag to compare

Bugfixes

  • #1539 also find keys with spaces when templating with --dependencies or replacing ContentBlockByKey(...) (before, the solution assumed keys never have spaces in them) by @JoernBerkefeld in #1540
  • #1511 fix ampscript getting saved as SSJS file when <script language="ampscript">...</script> is used instead of %%[ ... ]%%% by @JoernBerkefeld in #1542
  • #1541 fix folder-not-found- error during asset deployments by @JoernBerkefeld in #1543
  • #1526 fix --metadata support for schedule, execute and pause by @JoernBerkefeld in #1538

Chores

Dependencies

Special Thanks

  • Thanks go out to Shashank Deep for pointing me towards the missing support for keys without spaces (#1539)

Full Changelog: v7.1.2...v7.1.3

v7.1.2

31 Jul 11:25
Compare
Choose a tag to compare

Features

  • 1521: add deploy option --matchName for assets to allow auto-fixing keys during deployments by @JoernBerkefeld in #1524

Bugfixes

Chores

  • #1506: auto-handle "Another user recently modified this journey" update-error by @JoernBerkefeld in #1507
  • #1508 exclude triggeredSend from journey templating because they get auto-created upon publishing a journey and can be defined in more detail (including preheader!) as part of the journey's JSON by @JoernBerkefeld in #1509

Dependencies

Full Changelog: v7.1.1...v7.1.2

Details

Standard Commands

deploy

CHANGES
Now supports --matchName

Command: mcdev deploy [business unit] [metadata type] [metadata key] [--metadata] [--fromRetrieve] [--refresh] [--keySuffix] [--noMidSuffix] [--changeKeyValue=yourNewKey] [--changeKeyField=otherFieldInJson] [--execute] [--schedule] [--fixShared] [--noUpdate] [--publish] [--skipStatusCheck] [--matchName]

deploy with --matchName:

Imagine you want to start using mcdev, but your SFMC instance is already full of content. Most keys won't be readable, and you will eventually run fixKeys on your DEV business unit to make things easier. Once you revisited what fixKeys did and changed everything according to your new style guide for keys, you will eventually deploy things to another BU. But wait - the keys there are still in the old format, likely all different from what you had on DEV because you deployed things manually or via Package Manager. That would be a lot of work AGAIN to fix - deploy --matchName to the rescue!

Important: So far, this works for asset only, but there, it's really powerful already.

If it fails to find the same key, it will try to find a match by comparing the subtype, name, and folder. If there is ONE match, then it will assume it found what you need to override and update the asset's config and key with what you are trying to deploy.
If it finds more than one match for name & subtype, it will throw an error. If it finds one match but the folder is different, it will also throw an error. The error message will contain more details, allowing you to manually debug the situation before rerunning your deploy command.

Situation A: More than one match for name & type:

Look at all keys provided, search your BU folder for those keys to find out which ones are actually used, and delete the other ones. Be aware that you might not see references if you used ContentBlockByName or ContentBlockById!

Situation B: One match, but the folder is different

Look at the found asset and compare it to the one you are trying to deploy. If it is the right match, update the folder to the value from your deployment package in your local file and deploy that one. Then, re-run your original deployment.

mcdev deploy cred/bu --matchName
mcdev deploy cred/bu -m asset:key1  asset:key2  asset:key3 --matchName

v7.1.1

25 Jul 12:53
c129a6a
Compare
Choose a tag to compare

Features

  • #1362 importActivity JSON enhanced by adding source.c__type and parse new source fields for dataExtensions to support the new Data Imports of Summer 24 release by @JoernBerkefeld in #1497
  • #1474 update journey with details from referenced triggeredSend. This part of the journey config is usually only created/updated in the first version of the journey and then regardless of updates to the triggeredSend related to the email activity never updated again. By overwriting this with data from that TS we can use the journey by itself to auto-create new TS during deployment/publishing. by @JoernBerkefeld in #1498

Bugfixes

Chores

Full Changelog: v7.1.0...v7.1.1

v7.1.0 - Journeys

23 Jul 21:20
100813f
Compare
Choose a tag to compare

Features

Bugfixes

Chores

Dependencies

Full Changelog: v7.0.4...v7.1.0

Details

Templating Commands

build

CHANGES
Now supports --dependencies and --retrieve.

Command: mcdev build <--fromBu> <--toBu> <--fromMarket> <--toMarket> <--metadata> [--bulk] [--dependencies] [--retrieve]

build with --dependencies (and with --retrieve):

These two parameters are passed through to buildTemplate. Please see buildTemplate's documentation for details. The resulting list of types & keys of whatever buildTemplate will create are then handed over to buildDefinition(Bulk), making this a powerful solution.

buildTemplate

CHANGES
Now supports --dependencies and --retrieve.

Command: mcdev buildTemplate <business unit> [type] [key] [market] [--metadata] [--market] [--dependencies] [--retrieve]

buildTemplate with --dependencies:

Using the --dependencies option you turn on the most powerful templating feature that allows you to find all related other metadata items across all types. This includes other items linked via r__ field ("r" means "relationship") in their JSON and assets loaded via AMPscript or SSJS using the functions ContentBlockByKey, ContentBlockByName and ContentBlockById. The logic works recursively, finding dependencies of dependencies on all levels.

Example:

mcdev bt MyProject/DEV --market pilotMarketDEV1 -m dataExtension:MyUserTable --dependencies

buildTemplate with --retrieve:

When running buildTemplate you are solely using whats saved locally on your computer. If you want to get a fresh version from the server first, you can of course run mcdev retrieve yourself - or you include the --retrieve option here.
If used together with --dependencies, this will download all metadata types for the selected BU. If used without --dependencies option it will only retrieve the types you specified as part of your buildTemplate command.

Example:

mcdev bt MyProject/DEV --market pilotMarketDEV1 -m dataExtension:MyUserTable --retrieve
mcdev bt MyProject/DEV --market pilotMarketDEV1 -m dataExtension:MyUserTable --dependencies --retrieve

Standard Commands

deploy

CHANGES
Now supports --noUpdate, --publish and --skipStatusCheck

Command: mcdev deploy [business unit] [metadata type] [metadata key] [--metadata] [--fromRetrieve] [--refresh] [--keySuffix] [--noMidSuffix] [--changeKeyValue=yourNewKey] [--changeKeyField=otherFieldInJson] [--execute] [--schedule] [--fixShared] [--noUpdate] [--publish] [--skipStatusCheck]

deploy with --noUpdate

If you want to ensure that your deployment does not override existing metadata but instead is limited to creating new elements, then add the --noUpdate option to your call.

mcdev deploy cred/bu --noUpdate

deploy with --publish (and --skipStatusCheck)

By adding the --publish flag, you tell deploy to run mcdev publish for supported types as a post-deployment step. See publish method for more details

mcdev deploy cred/bu journey --publish 
mcdev deploy cred/bu journey --publish --skipStatusCheck

publish

CHANGES
New command

Command: mcdev publish <business unit> [metadata type] [metadata key] [--like] [--skipStatusCheck] [--metadata]

You can publish a draft journey using this command. This is the same as clicking on Publish in the web interface. If you don't care about the publishing result, you can skip that check (it might be useful in CI/CD environments). Generally, we recommend against using—-skipStatusCheck because it happens often that something is blocking the publishing, and without that check, you would not know about the problem.

mcdev publish cred/bu journey myJourneyKey
mcdev publish cred/bu journey id:myJourneyId
mcdev publish cred/bu -m journey:myJourneyKey -m journey:id:myJourneyId
mcdev publish cred/bu journey myJourneyKey --skipStatusCheck

execute

CHANGES
Now supports --metadata.

Command: mcdev execute <business unit> [type] [key] [--like] [--schedule] [--metadata]

Example:

mcdev execute MyProject/DEV -m automation:key1 -m automation:key2 -m query:keyA
mcdev execute MyProject/DEV -m automation:key1 automation:key2 query:keyB

pause

CHANGES
Now supports --metadata.

Command: mcdev pause <business unit> [type] [key] [--like] [--metadata]

Example:

mcdev pause MyProject/DEV -m automation:key1 -m automation:key2
mcdev pause MyProject/DEV -m automation:key1 automation:key2

schedule

CHANGES
Now supports --metadata.

Command: mcdev schedule <business unit> [type] [key] [--like] [--metadata]

Example:

mcdev schedule MyProject/DEV -m automation:key1 -m automation:key2
mcdev schedule MyProject/DEV -m automation:key1 automation:key2

Admin Commands

describeSoap

CHANGES
New command

Command: mcdev describeSoap [soap object]

Alias: mcdev describe, mcdev soap

This is mainly aimed at contributors to get a quick overview on available fields for the various SOAP Web Service API Objects. While there is a (not always correct) overview on possible SOAP operations per object, there is no good page that shows which fields can be retrieved or deployed.

Example:

mcdev soap DataFolder
...
Read more

v7.0.4

08 Jul 14:03
182011d
Compare
Choose a tag to compare

Bugfixes

Chores

Dependencies

Full Changelog: v7.0.3...v7.0.4

v7.0.3 - ESLint flat config

30 Jun 15:04
b9bab38
Compare
Choose a tag to compare

This update will replace your .eslintrc.json and .eslintignore with the new flat-config format required by ESLint v9+. Please note that the new config file will not include any changes you made to the original files but instead represents the default config config for mcdev projects. Your old files will be renamed to eslintrc.json.BAK and eslintignore.BAK for reference.

Bugfixes

  • #1391 regression deploying automations does not link its activities by @JoernBerkefeld in #1392
  • #1068 bug order of automation activities seems to sometimes change during retrieve or deploy by @JoernBerkefeld in #1393
  • #1390 using retrieve --metadata to specify types or keys always deleted the type's folder before downloading it again, even if you only tried to refresh a single key by @JoernBerkefeld in #1394

Chores

Dependencies

Full Changelog: v7.0.2...v7.0.3

v7.0.2 - regression fix

26 Jun 21:05
b2bc5c0
Compare
Choose a tag to compare

Bugfixes

Dependencies

Full Changelog: v7.0.1...v7.0.2

v7.0.1 - regression fix

22 Jun 08:58
9c8f436
Compare
Choose a tag to compare

Hotfix

Dependencies

Full Changelog: v7.0.0...v7.0.1

v7.0.0

07 Jun 08:07
6adcca1
Compare
Choose a tag to compare

Beaking Changes

  • #1292 enhance readability of dataExtension retention policy - check the wiki for how details on the field values. by @JoernBerkefeld in #1295
  • #1318 auto-enable allowchildren on folders during deployment of subfolders. Be aware that this will likely fix unwanted issues in most cases, it might disable intentional restrictions that you have placed on folders via SOAP API by @JoernBerkefeld in #1319
  • #58 rewrite dependency variables to r__format and formalize use of custom c__ variables by @JoernBerkefeld in #1333
    • impacts previously downloaded metadata from these types: asset, attributeGroup, attributeSet, automation, dataExtension, emailSend, event, importFile, journey, mobileMessage, query, sendClassification, transactionalEmail, transactionalPush, transactionalSMS, triggeredSend, verification
    • This change was made in preparation of a coming deploy-dependencies-feature

Features

New & improved Commands

New command options

New / improved metadata support

Bugfixes

Chores

Dependencies

Read more

v6.0.2

18 Jan 13:22
1323b23
Compare
Choose a tag to compare

Bugfixes

Dependencies

Special Thanks

Full Changelog: v6.0.1...v6.0.2