Releases: Accenture/sfmc-devtools
v7.10.0
Feature / breaking change
- #2112 handle redeploy of automation with verification by @JoernBerkefeld in #2157
The key field of verifications has been changed to a custom value that is dependent on the automation it belongs to. This move was necessary to enable easy deployment across BUs. Unfortunately, this metadata type does not have its own key.
Chores
- #2155 improve eslint settings for JavaScript and SSJS by @JoernBerkefeld in #2156
Full Changelog: v7.9.0...v7.10.0
v7.9.0
Features
- #2152 allow bulk-creating domainVerifications by @JoernBerkefeld in #2153
Bugfixes
- #2146 mcdev upgrade fails due to new createdeltapkg config by @JoernBerkefeld in #2149
- #2147 correct prompt to run npm install instead of npm update to fix project version being higher than app version by @JoernBerkefeld in #2150
Chores
- #2148 disable retrieving triggeredSend by default as its details reside in journeys by @JoernBerkefeld in #2151
Full Changelog: v7.8.0...v7.9.0
v7.8.0
Features
- #2138 allow filtering what metadata types will be looked at by createDeltaPkg by @JoernBerkefeld in #2141
- #2140 add --fix option to retrieve for helping with cleanups of BUs by @JoernBerkefeld in #2142
- #2139 show delete command to clean up higher environment after cdp-based deployment by @JoernBerkefeld in #2143
Dependencies
- Bump prettier from 3.5.0 to 3.5.3 by @dependabot in #2134
- Bump eslint from 9.20.0 to 9.21.0 by @dependabot in #2117
- Bump @eslint/js from 9.20.0 to 9.21.0 by @dependabot in #2118
- Bump @types/node from 22.13.1 to 22.13.9 by @dependabot in #2137
- Bump chai from 5.1.2 to 5.2.0 by @dependabot in #2081
- Bump inquirer from 12.4.1 to 12.4.2 by @dependabot in #2087
- Bump globals from 15.14.0 to 16.0.0 by @dependabot in #2105
- Bump fast-xml-parser from 4.5.1 to 5.0.8 by @dependabot in #2123
- Bump dawidd6/action-download-artifact from 8 to 9 by @dependabot in #2136
Full Changelog: v7.7.2...v7.8.0
v7.7.2
Bugfixes
- #1636: locally delete renamed or removed asset parts upon retrieve by @JoernBerkefeld in #2126
- #1232 ensure old asset content blocks get removed if the file type changed by @JoernBerkefeld in #2127
- #2119 stop build if buildTemplate did not find any items by @JoernBerkefeld in #2130
Chores
- #2124 improve readability of validation rule messages by @JoernBerkefeld in #2125
- #1941 delete local file if retrieve-by-key cannot find the item on the server by @JoernBerkefeld in #2128
- #2120 recommend installing mcdev vsce for mcdev projects by @JoernBerkefeld in #2129
- #2131 improve recognition of fixable validation rules by @JoernBerkefeld in #2132
Full Changelog: v7.7.1...v7.7.2
v7.7.1
Bugfixes
- #2088 fix javascript error when running deploy by @JoernBerkefeld and @FiloMichal in #2095
- #2098 await file purging before building definitions by @JoernBerkefeld in #2099
- #2100 deleting transactional journeys now also locally deletes the associated transactionalEmail file locally. The API automatically deletes it on the server internally by @JoernBerkefeld in #2101
Chores
- #2102 add validation rule config setting 'fix' (next to already existing options 'off', 'warn', 'error') by @JoernBerkefeld in #2103
- #2090 enhanced eslint rules for mcdev projects by @JoernBerkefeld in #2091
- #2093 no longer auto-recognize vscode extension running mcdev to enable colors in test runs by @JoernBerkefeld in #2094
- #2096 auto-check config whenever it's loaded by @JoernBerkefeld in #2097
Full Changelog: v7.7.0...v7.7.1
v7.7.0
Features
- #1918 extend
createDeltaPkg
-command logic to understand multiple key-value pairs in the source-target-mapping; enabling you to work with multiple source BUs in one CI/CD pipeline by @JoernBerkefeld in #2045 - #2047 extend
createDeltaPkg
with options frombuild
-command:--dependencies
,--retrieve
,--skipValidation
and add new option--range
for enhanced flexibility by @JoernBerkefeld in #2053 - #1461 add new option
--purge
and--no-purge
tocreateDeltaPkg
,build
,buildDefinition
,buildDefinitionBulk
that lets you pre-select if the deploy-folder should be emptied or not by @JoernBerkefeld and @LaurisBahs in #2023 - #1678 add
--fix
option todeploy
,build
,buildDefinition
,buildDefinitionBulk
,createDeltaPkg
which enables auto-fixing problems that were recognized by validation rules. This is dependent on the validation rule being able to apply a fix. by @JoernBerkefeld and @anasilva105 in #2077 - #1467 create templates only temporarily when running
build
-command, instead of storing templates intemplate/
folder. To create permanent templates, you now have to usebuildTemplate
instead. by @JoernBerkefeld in #2024 - #1703 add new
clone
-command to easily copy a component from one BU to another without making changes to it. It internally usesbuild
-command to ensure consistency and to allow you to usebuild
's options like--dependencies
. Contrary tobuild
it does not use markets / market lists. by @JoernBerkefeld in #2025 - #1989 retrieve sendClassification by default from now on by @JoernBerkefeld in #2062
- #2031 auto-
pause
&resume
transactional journeys during deployments to allow updating them. Before this required manual pre- and post-deployment steps by @JoernBerkefeld in #2058 - #2064 check and auto-create new type domainVerification (From Name Management) entries for senderProfiles. This programmatically clicks on the "Verify" button next to an email address in the Sender Profile, allowing you to actually use it. by @JoernBerkefeld in #2065
- #2067 prevent CloudPage assets (asset-asset with assetType.name == 'webpage') from being created via mcdev because those couldn't be used. CloudPages need to be created by a manual pre-deployment step due to lack of API support. by @JoernBerkefeld and @Dipasree-ghosh #2068
Bugfixes
- #2011 throttle
createDeltaPkg
to prevent it from failing for 100+ changes by @JoernBerkefeld in #2012 - #2028 handle event 404 when trying to
delete
gracefully by @JoernBerkefeld in #2033 - #2030 no longer stop after first no-delta-found source-target map in
createDeltaPkg
by @JoernBerkefeld and @LaurisBahs in #2055 - #2032 auto-re-retrieve journeys after they were
published
by @JoernBerkefeld in #2056 - #2035
deploy
asset failed if pre-existingContentBlockByKey()
-dependencies are not also deployed by @JoernBerkefeld in #2051 - #2036 fix regression that blocked creation of transactional send journeys by @JoernBerkefeld in #2040
- #2075 if
ContentblockByKey()
was not found other references in json were ignored by @JoernBerkefeld in #2076 - #2061 print error if
.mcdev.validations.js
could not be loaded due to a syntax error by @JoernBerkefeld and @PriyajitGhosh1995 in #2063 - #1772
deploying
template and template-based email in one go resulted in error "does not have field 'id'" by @JoernBerkefeld in #2079
Chores
- #2013 ensure
createDeltaPkg
uses--metadata
andbuild
-command internally by @JoernBerkefeld in #2022 - #2027 move
deltapackage.log
fromdocs/
folder intologs/
folder by @JoernBerkefeld in #2054 - #2034 fix weird "publishing" log output by ordering execution based on journey-definitionType of the journeys by @JoernBerkefeld in #2057
Dependencies
- Bump dawidd6/action-download-artifact from 7 to 8 by @dependabot in #2015
- update github workflows for action/upload-artifact, action/download-artifact and dawidd6/action-download-artifact by @JoernBerkefeld in #2041
- Bump eslint from 9.18.0 to 9.20.0 by @dependabot in #2073
- Bump @eslint/js from 9.18.0 to 9.20.0 by @dependabot in #2072
- Bump eslint-plugin-jsdoc from 50.6.2 to 50.6.3 by @dependabot in #2019
- Bump prettier from 3.4.2 to 3.5.0 by @dependabot in #2069
- Bump inquirer from 12.3.2 to 12.4.1 by @dependabot in #2043
- Bump semver from 7.6.3 to 7.7.1 by @dependabot in #2074
- Bump lint-staged from 15.4.1 to 15.4.3 by @dependabot in #2018
- Bump mocha from 11.0.1 to 11.1.0 by @dependabot in #2017
- Bump @types/node from 22.10.7 to 22.13.1 by @dependabot in #2070
Special Thanks
We thank @LaurisBahs, @PriyajitGhosh1995, @Dipasree-ghosh and @anasilva105 for their contribution to this release.
Full Changelog: v7.6.3...v7.7.0
v7.6.3
Bugfixes
- #1877 ensure we don't lose event.schema information when creating new SF events by @JoernBerkefeld in #2007
Chores
- #1992 resolve fileNamePatternType in automations by @JoernBerkefeld in #1993
- #2005 resolve locationTypeId on fileLocation by @JoernBerkefeld in #2006
- #1990 improve error on filename and key mismatch by @JoernBerkefeld in #2008
Dependencies
- Bump @eslint/js from 9.17.0 to 9.18.0 by @dependabot in #2002
- Bump @types/node from 22.10.6 to 22.10.7 by @dependabot in #2003
- Bump eslint-config-prettier from 9.1.0 to 10.0.1 by @dependabot in #2004
- Bump eslint-plugin-jsdoc from 50.6.1 to 50.6.2 by @dependabot in #1997
- Bump eslint-plugin-prettier from 5.2.1 to 5.2.3 by @dependabot in #1996
- Bump fs-extra from 11.2.0 to 11.3.0 by @dependabot in #2001
- Bump lint-staged from 15.3.0 to 15.4.1 by @dependabot in #1998
- Bump yocto-spinner from 0.1.2 to 0.2.0 by @dependabot in #1999
Full Changelog: v7.6.2...v7.6.3
v7.6.2 - journey patches
Bugfixes
- #1859 ensure upserted dataExtract are saved with created and modified dates by @JoernBerkefeld in #1962
- #1857 ensure upserted sendClassification are saved with created and modified date by @JoernBerkefeld in #1963
- #1856 ensure upserted senderProfiles are saved with CreatedDate, ModifiedDate, createdBy and modifiedBy by @JoernBerkefeld in #1964
- #1796 ensure upserted events are saved with createdDate, createdBy, modifiedDate, modifiedBy by @JoernBerkefeld in #1966
- #1768 fix dataExtension Fields getting set to empty string after changeKeyField and dataExtension documentation not updated by @JoernBerkefeld in #1969
- #1790 allow re-deploying transactional journeys without transactionalEmail present as long as they are in Draft by @JoernBerkefeld in #1971
- #1972 calling
refresh
without defining a type results in unhandled error by @JoernBerkefeld in #1974 - #1771 auto-retrieving transactional journeys after publishing them failed to find transactionalEmails by @JoernBerkefeld in #1975
- #1803
deploy --publish
did not update local event jsons after success by @JoernBerkefeld in #1977 - #1902 update cc and bcc value on transactional journeys from transactionalEmail by @JoernBerkefeld in #1973
- #1943 refreshing transactional send journeys now changes the lastmodified timestamp on transactionalEmail and journey by @JoernBerkefeld in #1983
Chores
- #1960 hide prettier error log behind config option.formatErrorLog by @JoernBerkefeld in #1961
- #1967 remove folder info from sub-contentblocks in assets to avoid deployment blockers by @JoernBerkefeld in #1968
- #1923 support transactional send journeys for auto-refresh when publish is run on already published journeys by @JoernBerkefeld in #1970
- #1976 Guide VSCE users what to do when project and app version are out of sync by @JoernBerkefeld and @Dipasree-ghosh in #1987
- #1965 include vsce peacock in recommended extensions by @JoernBerkefeld in #1988
Dependencies
- Bump @types/node from 22.10.2 to 22.10.6 by @dependabot in #1979
- Bump c8 from 10.0.0 to 10.1.3 by @dependabot in #1950
- Bump dawidd6/action-download-artifact from 6 to 7 by @dependabot in #1906
- Bump eslint from 9.17.0 to 9.18.0 by @dependabot in #1980
- Bump fast-xml-parser from 4.4.1 to 4.5.1 by @dependabot in #1953
- Bump inquirer from 12.1.0 to 12.3.2 by @dependabot in #1986
- Bump ldez/gha-mjolnir from 1.4.1 to 1.5.0 by @dependabot in #1958
- Bump lint-staged from 15.2.10 to 15.3.0 by @dependabot in #1957
- Bump p-limit from 6.1.0 to 6.2.0 by @dependabot in #1951
- Bump typescript from 5.7.2 to 5.7.3 by @dependabot in #1978
- Bump yocto-spinner from 0.1.1 to 0.1.2 by @dependabot in #1952
Full Changelog: v7.6.1...v7.6.2
v7.6.1
Bugfixes
- #1942
refresh
triggeredsend fails with "no keys provided" error by @JoernBerkefeld and @PriyajitGhosh1995 in #1945
Chores
- #1940: resolve fileLocation in GCP triggered automations by @JoernBerkefeld in #1946
Full Changelog: v7.6.0...v7.6.1
v7.6.0
Features
- #1746 support
pause
andresume
for transactional send journeys by @JoernBerkefeld in #1765 - #1919 reroute
stop
journey topause
journey for transactional send journeys because these don't support stop by @JoernBerkefeld in #1920 - #1921 allow updating emails for selected journeys using the
refresh
command (transactional + multi-step) by @JoernBerkefeld in #1922 - #1879 Allow
stopping
all versions of a multi-step journey by @JoernBerkefeld in #1929
Bugfixes
- #1881 handle bad journey retrieve-by-key responses gracefully by @JoernBerkefeld in #1887
- #1774 show proper error when no keys were provided to
build / bt / bd / bdb
by @JoernBerkefeld in #1888 - #1889 throttle
refresh
to 10 concurrent triggeredSends/journeys to avoid timeouts; add icons for pause/publish/start by @JoernBerkefeld in #1890 - #1914 make dataExtension-not-found error easier to understand when trying to delete by @JoernBerkefeld in #1915
- #1916 keys with ":" in could not be found before by @JoernBerkefeld in #1917
- #1836 Ensure automatic new version creation during deploy only happens to multi-step jourmeys without a draft version - but not for transactional send journeys which are not versioned by @JoernBerkefeld in #1930
- #1837
deleting
transactional send journey no longer asks for a version by @JoernBerkefeld in #1931
Chores
- #1882 set maxKeyLength for journey and transactionalEmail by @JoernBerkefeld in #1883
- #1880 hint to using --ignoreSfFields / --isf to skip
deploy
error by @JoernBerkefeld in #1886
Dependencis
- Bump winston from 3.15.0 to 3.17.0 by @dependabot in #1871
- Bump @eslint/js from 9.10.0 to 9.15.0 by @dependabot in #1875
- Bump husky from 9.1.6 to 9.1.7 by @dependabot in #1872
- Bump chai from 5.1.1 to 5.1.2 by @dependabot in #1873
- Bump eslint from 9.10.0 to 9.15.0 and eslint-plugin-unicorn from 56.0.0 to 56.0.1 by @dependabot in #1874
- Bump eslint-plugin-jsdoc from 50.5.0 to 50.6.1 by @dependabot in #1937
- Bump @types/node from 22.9.0 to 22.10.2 by @dependabot in #1936
- Bump eslint from 9.15.0 to 9.17.0 by @dependabot in #1935
- Bump globals from 15.12.0 to 15.14.0 by @dependabot in #1938
- Bump @eslint/js from 9.15.0 to 9.17.0 by @dependabot in #1934
- Bump prettier from 3.3.3 to 3.4.2 by @dependabot in #1925
- Bump typescript from 5.6.3 to 5.7.2 by @dependabot in #1895
- Bump mocha from 10.7.3 to 11.0.1 by @dependabot in #1912
- Bump conf from 13.0.1 to 13.1.0 by @dependabot in #1926
Full Changelog: v7.5.0...v7.6.0
Details
Standard Commands
refresh
Command: mcdev refresh <business unit> [type] [external key] [--metadata]
Alias: mcdev re
This command lets you refresh emails in journeys and triggeredSends to ensure that updates made to the email or loaded content blocks get reflected when the emails are send out. This is only relevant is your journey is already "running" / your triggeredSend is "active".
If you do not specify keys, for triggeredSend, it will refresh all running ("Active") triggered sends on the given BU. It will also check if all dependencies for that triggered send are available to ensure it can be published & restarted after it was paused. However, if you made changes to the email that caused issues, you might still get an error, which prevents you from restarting it.
Currently supported types:
Name | CLI Argument | Effect |
---|---|---|
Triggered Send | triggeredSend |
Refreshes emails in active triggeredSends and, thereby, any emails in Journeys. |
Journey | journey |
Refreshes emails in multi-step journeys (by refreshing associated triggered sends) and transactional send journeys. |
Refreshing a multi-step journey will not be reflected in the journey's 'json. However, if you refresh a transactional send journey, it will affect the last modified date.
Example:
mcdev refresh MyProject/_ParentBU_ -m triggeredSend
mcdev refresh MyProject/_ParentBU_ -m triggeredSend:myTsKey
mcdev refresh MyProject/_ParentBU_ -m journey:key1 journey:key2
stop
Command: mcdev stop <business unit> [type] [key] [--like] [--metadata]
Alias: -
This command lets you stop metadata of a given type and key.
Currently supported types:
Name | CLI Argument | Effect |
---|---|---|
Journey | journey |
stops running journey |
For journeys
you can choose to specify a specific version to stop by appending "/4" (to stop version 4). If you do not append a version, mcdev will attempt to stop the latest version. Alternatively, you can stop all versions by appending "/*".
Example (stopping highest version):
mcdev stop MyProject/DEV -m journey:keyA journey:keyB journey:keyC
Example (stopping specific version):
mcdev stop MyProject/DEV -m journey:keyA/3 journey:keyB/2
Example (stopping all versions):
mcdev stop MyProject/DEV -m journey:keyC/*
stop with --like operator:
Instead of specifying a key, you can use the --like option to find your target. This is equal to not specifying a version and will default to the highest version.
mcdev stop MyProject/DEV -m journey --like.key "myprefix_%"
mcdev stop MyProject/DEV -m journey --like.key "myprefix_%" --like.r__folder_Path "my Journeys/Testing%"
stop on all BUs:
This variation of the stop command allows you to stop specified items on all BUs. mcdev will look for the items of defined types and keys on all BUs and stop them.
Example:
mcdev stop MyProject/* -m journey:keyA journey:keyB
mcdev stop MyProject/* -m journey:keyA/2 journey:keyB/3
mcdev stop MyProject/* -m journey:keyA/* journey:keyB/*