-
Notifications
You must be signed in to change notification settings - Fork 36
06.a ~ Admin Commands
Command: mcdev init
Alias: -
Creates the basic configuration file .mcdevrc.json
and .mcdev-auth.json
in your project directory. You may add more credentials by re-running the same command again, e.g. to add production and sandbox credentials next to each other.
In addition, it initializes an npm package for you, installs recommended npm dependencies and places our default IDE configuration files for ESLint, Prettier, Git and VSCode into your project directory.
The initialization ends with the creation of your Git repository and the first backup of your SFMC instance.
Example - initialize project / add additional credentials:
mcdev init
Example - update credentials:
mcdev init yourCredentialName
The interactive setup will ask you for an EID (Parent MID)
, Client ID
and Client Secret
of an installed package. It also asks for the Authentication Base Uri
. Each installed package on a given SFMC instance shares the same tenant sub-domain and always shows you 3 domains (Auth, REST and SOAP).
Example URL: https://mcg123abcysykllg-0321cbs8bbt64.auth.marketingcloudapis.com
Note to CLI experts:
You can run this command without the interactive wizard asking questions using the
--skipInteraction
(or short--yes
/--y
) flag. In this case, you need to provide a few values in the command:mcdev init --y.credentialName "yourCustomCredentialName" --y.client_id "yourClientIdHere" --y.client_secret "yourClientSecretHere" --y.auth_url "https://yourTenantSubdomainHere.auth.marketingcloudapis.com/" --y.gitRemoteUrl "https://my.git.server.com/myrepo.git" --y.account_id 00000000 --y.downloadBUs "true" --y.gitPush "true" --y.developmentBu "Name_of_my_DEV_BU"
CLI Argument | Description |
---|---|
--y.credentialName |
Credential name of your Business Unit |
--y.client_id |
Salesforce Marketing Cloud client ID |
--y.client_secret |
Salesforce Marketing Cloud client secret |
--y.auth_url |
Marketing cloud auth url |
--y.gitRemoteUrl |
URL of your git remote repo |
--y.account_id |
MID of the parent BU |
--y.downloadBUs |
Download all the BUs: true or false
|
--y.gitPush |
Do the first git push: true or false
|
--y.developmentBu |
set the name of your development BU |
Command: mcdev join
Alias: -
This command clones an existing Accenture SFMC DevTools project from a Git repository and sets up your local environment. It then creates the basic credentials file .mcdev-auth.json
in your project directory and it installs recommended npm dependencies.
One could use mcdev init
instead, but this command nicely combines all necessary steps and ensures there are no issues during the git-clone process.
Example:
mcdev join
Command: mcdev upgrade
Alias: mcdev up
This upgrades older Accenture SFMC DevTools projects to the newest standard: Outdated Accenture SFMC DevTools configuration files are upgraded and the right npm dependencies are installed. It also copies the right IDE configuration files into your project folder. See init for more details.
Example:
mcdev upgrade
Command: mcdev reloadBUs [credential]
Alias: mcdev rb
Use this to synchronize your local list of available Business Units for a given credential. This is useful if you've added, deleted or renamed Business Units on your SFMC instance and want to make sure that your local setup reflects that - or if you accidentally changed your config file and want to restore it.
Example:
mcdev reloadBUs MyProject
Command: mcdev badKeys [business unit]
Alias: -
Lists all metadata for which the External key is not in sync with the name to enable you to update them quickly.
Example:
mcdev badKeys MyProject/DEV
Command: mcdev document <business unit> <TYPE>
Alias: mcdev doc
Creates human-readable documentation for your metadata. This command is executed by default for supported types unless you changed your config manually (metaDataTypes.documentOnRetrieve
). Therefore, running it manually is typically not required. You can choose to generate HTML (html
) or Markdown (md
) docs via options.documentType
.
The default format is set to md
as Markdown renders nicely in Git as well as in VSCode's Markdown preview and can be copied from there into Confluence and other applications without losing the formatting.
As standard roles are often not used by projects, we have the optional setting options.documentStandardRoles
which is by default set to false
Currently supported types:
Name | CLI Argument |
---|---|
Automation | automation |
Data Extension | dataExtension |
Role | role |
User | accountUser |
Example:
mcdev document myServer role
Command: mcdev selectTypes
Alias: mcdev st
Allows you to interactively select which metadata is retrieved when you run the retrieve
command. Try out explainTypes
first to understand what each type means.
Example:
mcdev selectTypes
Note: You may select non-standard types if you run mcdev selectTypes --debug
. This may be needed in edge cases but is not recommended in most situations.
Command: mcdev explainTypes [--json]
Alias: mcdev et
A helper command for selectTypes
. It prints out a table that defines what the various types are.
Types marked as not-default should be ignored. These are either under development or merely meant to support contributing to Accenture SFMC DevTools.
Example:
mcdev explainTypes
You can also add the parameter --json
to instead get a more detailed output in json format.
mcdev explainTypes --json
which leads to the following (abbreviated here):
[
{
"name": "Triggered Send",
"apiName": "triggeredSend",
"retrieveByDefault": true,
"supports": {
"retrieve": true,
"create": true,
"update": true,
"delete": true,
"changeKey": true,
"buildTemplate": true,
"retrieveAsTemplate": false
},
"description": "DEPRECATED: Sends emails via API or DataExtension Event.",
},
{
"name": "User",
"apiName": "user",
"retrieveByDefault": false,
"supports": {
"retrieve": true,
"create": true,
"update": true,
"delete": false,
"changeKey": true,
"buildTemplate": true,
"retrieveAsTemplate": false
},
"description": "Marketing Cloud users",
}
]
Command: mcdev resolveId [business unit] [metadata type] [metadata key]
Alias: mcdev rid
Tries to find the requested asset id and return the key and name as well as info on where it was shared from, if that is the case. This is particularly helpful if you have to deal with code that uses ContentBlockById a lot.
Example:
mcdev rid MyProject/DEV asset 4961
mcdev:: resolveId
- Searching asset with id 4961 on BU MyProject/DEV
- ID: 4961
- Key: 20af5fbf-b4ac-4471-a7e6-2e3d5685c197
- Name: footer_b2c_transactional
- How to use:
%%= ContentBlockByKey("20af5fbf-b4ac-4471-a7e6-2e3d5685c197") =%%
%%= ContentBlockByName("Content Builder\Release 2 - BUILD\Content Blocks Library\05. Footer and Attachments\Referred content blocks\footer_b2c_transactional") =%%
- local link: ./retrieve/MyProject/DEV/asset/block/20af5fbf-b4ac-4471-a7e6-2e3d5685c197.asset-block-meta.html
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
Response:
Name DataType IsUpdatable IsRetrievable MaxLength IsRequired
-------------------------- ------------- ----------- ------------- --------- ----------
ID Int32 true true true
Client.ID Int32 true true true
ParentFolder.ID Int32 true true false
ParentFolder.CustomerKey String true true 36 false
ParentFolder.ObjectID Guid true true false
ParentFolder.Name String true true 100 false
ParentFolder.Description String true true 200 false
ParentFolder.ContentType String true true 50 false
ParentFolder.IsActive Boolean false true false
ParentFolder.IsEditable Boolean false true false
ParentFolder.AllowChildren Boolean false true false
Name String true true 100 true
Description String true true 200 true
ContentType String true true 50 true
IsActive Boolean true true false
IsEditable Boolean true true false
AllowChildren Boolean true true false
CreatedDate DateTime true true true
ModifiedDate DateTime true true true
Client.ModifiedBy Int32 true true true
ObjectID String true true false
CustomerKey String true true 36 false
Client.EnterpriseID Int64 true true false
Client.CreatedBy Int32 true true false
ParentFolder DataFolder true false
Client ClientID true false
PartnerKey String true false
PartnerProperties APIProperty[] true false
Owner Owner true false
CorrelationID String true false
ObjectState String true false
IsPlatformObject Boolean true false
Copyright (c) 2020-2025 Accenture. MIT licensed. Main contributors: Jörn Berkefeld, Doug Midgley