Configuration file definition for sfdx-hardis Salesforce DX plugin
No Additional PropertiesTypes of orgs allowed for config & development. If not set, sandbox and scratch are allowed by default
No Additional Items[
"sandbox"
]
When saving a sfdx-hardis task, the list of cleanings will be automatically applied to sfdx sources
No Additional Items[
"dashboards",
"datadotcom",
"destructivechanges"
]
When saving a sfdx-hardis task, these permissions will be removed from profiles
No Additional Items[
"EnableCommunityAppLauncher",
"FieldServiceAccess",
"OmnichannelInventorySync"
]
When calling hardis:scratch:pull, if you define metadatas (named or not), they will also be retrieved using force:source:retrieve
No Additional Items[
"CustomApplication"
]
[
"CustomApplication:MyApp1",
"CustomApplication:MyApp2"
]
Minimum percentage of apex code coverage accepted
80.0
95.0
When calling hardis:work:new, you can override the default branch prefixes. Input title, value and description for each of them
No Additional Items[
{
"title": "Feature",
"value": "feat",
"description": "New feature, evolution of an existing feature... If you don't know, just select Feature"
},
{
"title": "Debug",
"value": "fix",
"description": "A bug has been identified and you are the right person to solve it !"
}
]
List of patterns to automatically clean XML files
No Additional ItemsClean XML pattern and xpaths
No Additional PropertiesGlob pattern to identify XML files to clean
"/**/*.flexipage-meta.xml"
XPaths to identify elements to remove
No Additional Items[
"//ns:flexiPageRegions//ns:name[contains(text(),'dashboardName')]"
]
[
{
"globPattern": "/**/*.flexipage-meta.xml",
"xpaths": [
"//ns:flexiPageRegions//ns:name[contains(text(),'dashboardName')]"
]
},
{
"globPattern": "/**/*.layout-meta.xml",
"xpaths": [
"//ns:relatedLists//ns:relatedList[contains(text(),'RelatedSolutionList')]"
]
}
]
List of commands to run before a deployment
Command definition
No Additional PropertiesIdentifier of the command (can be any string)
Label of the command (what does it do ?)
Command line to run
[
{
"id": "knowledgeUnassign",
"label": "Remove KnowledgeUser right to the user who has it",
"command": "sf data update record --sobject User --where \"UserPermissionsKnowledgeUser='true'\" --values \"UserPermissionsKnowledgeUser='false'\" --json"
},
{
"id": "knowledgeAssign",
"label": "Assign Knowledge user to desired username",
"command": "sf data update record --sobject User --where \"Username='deployment-user@myclient.com'\" --values \"UserPermissionsKnowledgeUser='true'\" --json"
}
]
List of commands to run after a deployment
No Additional ItemsCommand definition
No Additional PropertiesIdentifier of the command (can be any string)
Label of the command (what does it do ?)
Command line to run
Context when the command must be run
"all"
"check-deployment-only"
"process-deployment-only"
Do not run the command if there is a deployment error
[
{
"id": "knowledgeUnassign",
"label": "Remove KnowledgeUser right to the user who has it",
"command": "sf data update record --sobject User --where \"UserPermissionsKnowledgeUser='true'\" --values \"UserPermissionsKnowledgeUser='false'\" --json"
},
{
"id": "knowledgeAssign",
"label": "Assign Knowledge user to desired username",
"command": "sf data update record --sobject User --where \"Username='admin-user@myclient.com'\" --values \"UserPermissionsKnowledgeUser='true'\" --json"
}
]
List of custom commands for VsCode SFDX-Hardis extension
No Additional ItemsCustom command definition
No Additional PropertiesIdentifier of the menu (can be any string)
Label of the menu
List of commands of the menu
No Additional ItemsCustom command definition
No Additional PropertiesIdentifier of the command (can be any string)
Label of the command that will appear in menu
Icon (can be any of svg icons of this list: https://github.com/hardisgroupcom/vscode-sfdx-hardis/tree/master/resources
Text that will appear when user will hover the command
Command line to run when clicking on the menu
URL for help page of the command
[
{
"id": "custom-menu",
"label": "Custom commands",
"commands": [
{
"id": "generate-manifest-xml",
"label": "Generate manifest",
"icon": "file.svg",
"tooltip": "Generates a manifest package.xml using local sfdx source files",
"command": "sf project generate manifest --source-path force-app --name myNewManifest"
},
{
"id": "list-all-orgs",
"label": "List all orgs",
"icon": "salesforce.svg",
"tooltip": "List all orgs that has already been authenticated using sfdx",
"command": "sf org list --all"
}
]
},
{
"id": "custom-menu-2",
"label": "Another custom menu",
"commands": [
{
"id": "echo",
"label": "Echo something",
"icon": "user.svg",
"tooltip": "Useless commands just to show that we can use not sfdx commands too",
"command": "echo \"Something\""
}
]
}
]
Position of custom commands in the menu (first or last)
"first"
"last"
Custom colors set by VsCode SFDX Hardis
Additional Properties of any type are allowed.
Type: objectList of additional plugins that will be displayed in VsCode SFDX-Hardis Dependencies panel
No Additional ItemsPlugin definition
No Additional PropertiesName of the plugin npm package
"mo-dx-plugin"
"shane-sfdx-plugins"
Url of plugin documentation
"https://github.com/msrivastav13/mo-dx-plugin"
"https://github.com/mshanemc/shane-sfdx-plugins"
[
{
"name": "mo-dx-plugin",
"helpUrl": "https://github.com/msrivastav13/mo-dx-plugin"
},
{
"name": "shane-sfdx-plugins",
"helpUrl": "https://github.com/mshanemc/shane-sfdx-plugins"
}
]
List of data packages
No Additional ItemsData package
No Additional PropertiesPath to SFDMU project
Path to SFDMU project
When generating a new package version protected with password, use this value as default package installation key
"hardis"
"myPassword"
"dFGGF43656YfdFDG{{{dhgfh:::;FSEDSFd78"
When creating a new sfdx-hardis task, this git branch is used as base to create the feature/debug sub branch. The merge request will later have this branch as target.
"developpement"
"dev_lot2"
"hotfixes"
Deployment plan that will be performed during deployments. Can be based on packageXmlFile for sources or on dataPath for sfdmu data deployments
{
"packages": [
{
"label": "Import EmailTemplate records",
"dataPath": "scripts/data/EmailTemplate",
"order": -21
},
{
"label": "Deploy EmailTemplate",
"packageXmlFile": "manifest/splits/packageXmlEmails.xml",
"order": -20
},
{
"label": "Deploy Flow-Workflow",
"packageXmlFile": "manifest/splits/packageXmlFlowWorkflow.xml",
"order": 6
}
]
}
During deployment, main package.xml will be split into these packages. Can also contain data packages
Source or data package to deploy
No Additional Properties"scripts/data/EmailTemplate"
"Deploy EmailTemplate"
"Import EmailTemplate records"
-20
13
50
"manifest/splits/packageXmlEmails.xml"
Delay to wait before installing the next package
10
20
[
{
"label": "Import EmailTemplate records",
"dataPath": "scripts/data/EmailTemplate",
"order": -21
},
{
"label": "Deploy EmailTemplate",
"packageXmlFile": "manifest/splits/packageXmlEmails.xml",
"order": -20
}
]
Dev Hub alias, usually DevHub_ProjectName
"DevHub_MyClientMyProject"
"DevHub_GoogleGmail"
"DevHub_AppleIWatch"
Dev Hub username, used to authenticate to DevHub from CI jobs
"cicd-user@myclient.com"
"scratch-user@google.fr"
"scratch-user@apple.fr"
You can base your local sfdx-hardis configuration on a remote config file. That allows you to have the same config base for all your projects
"https://raw.githubusercontent.com/worldcompany/shared-config/main/.sfdx-hardis.yml"
When creating a scratch org, Admin user will be automatically assigned to those permission sets
No Additional ItemsPermission Set or Permission Set Group
No Additional PropertiesPermission Set or Permission Set Group name
[
"MyPermissionSet",
"MyPermissionSetGroup",
"MyPermissionSetGroup2"
]
[
"MyPermissionSet",
"MyPermissionSetGroup"
]
Defines the list of packages installed on the project. Use
No Additional ItemsSalesforce package info (managed, unlocked or unmanaged)
No Additional Properties"0A35r000000GveVCAS"
"033b0000000Pf2AAAS"
"Files Attachment Notes"
"fan_astrea"
"04t0o000003nRWAAA2"
"Summer2021"
"1.22.0.2"
If true, during deployments this package will be installed in target org if not installed yet
true
false
If true, this package will be installed when creating a new scratch org with sfdx-hardis
true
false
Installation key for key-protected package
"MyInstallationKey"
"4FzkMzUSwFfP#@"
[
{
"Id": "0A30N000000ALWrSAO",
"SubscriberPackageId": "033b0000000Pf2AAAS",
"SubscriberPackageName": "Declarative Lookup Rollup Summaries Tool",
"SubscriberPackageNamespace": "dlrs",
"SubscriberPackageVersionId": "04t0N000000IyYrQAK",
"SubscriberPackageVersionName": "2.11",
"SubscriberPackageVersionNumber": "2.11.0.1",
"installOnScratchOrgs": false,
"installDuringDeployments": true,
"installationkey": "MyInstallationKey"
},
{
"Id": "0A35r000000GveVCAS",
"SubscriberPackageId": "0330o000000B3vIAAS",
"SubscriberPackageName": "Files Attachment Notes",
"SubscriberPackageNamespace": "fan_astrea",
"SubscriberPackageVersionId": "04t0o000003nRWAAA2",
"SubscriberPackageVersionName": "Summer2021",
"SubscriberPackageVersionNumber": "1.22.0.2",
"installOnScratchOrgs": true,
"installDuringDeployments": true
}
]
When calling deployment check command, installs any package referred within installedPackages property
true
Salesforce instance URL used by CI for deployment or backups
"https://myclient.force.com"
"https://google.force.com"
"https://apple.force.com"
List of ListView items to set to Mine after a delivery (that does not accept value 'Everything')
No Additional ItemsList of metadata to retrieve for retrofit job
No Additional Items[
"CustomField",
"Layout",
"PermissionSet"
]
List of monitoring commands to run with command hardis:org:monitor:all
No Additional ItemsMonitoring command
No Additional PropertiesUnique identifier of the monitoring command. Can be used with monitoringDisable
Title of the command (will appear in logs)
Bash command to run
daily or weekly
[
{
"title": "Detect calls to deprecated API versions",
"key": "LEGACYAPI",
"command": "sf hardis:org:diagnose:legacyapi",
"frequency": "weekly"
},
{
"title": "My custom command",
"key": "MY_CUSTOM_KEY",
"command": "sf my:custom:command",
"frequency": "daily"
}
]
Override list of Setup Audit Trail elements that won't be considered as suspect by monitoring tools
Additional Properties of any type are allowed.
Type: objectList of commands to skip during monitoring jobs
No Additional Items[
"METADATA_STATUS",
"UNUSED_METADATAS"
]
List of usernames to exclude while running monitoring commands
No Additional Items[
"deploymentuser@cloudity.com",
"mc-cloud-user@cloudity.com"
]
Url of the Ms Teams channel Web Hook that can be used to send ALL notifications
"https://my.msteams.webhook.url"
Url of the Ms Teams channel Web Hook that can be used to send CRITICAL notifications
"https://my.msteams.webhook.url"
Url of the Ms Teams channel Web Hook that can be used to send SEVERE notifications
"https://my.msteams.webhook.url"
Url of the Ms Teams channel Web Hook that can be used to send WARNING notifications
"https://my.msteams.webhook.url"
Url of the Ms Teams channel Web Hook that can be used to send INFO notifications
"https://my.msteams.webhook.url"
List of notifications types to skip sending
No Additional Items[
"METADATA_STATUS",
"UNUSED_METADATAS"
]
Path to a custom package-no-overwrite XML file (used in smartDeploy command)
"manifest/package-no-overwrite-main.xml"
"manifest/package-no-overwrite-custom.xml"
Configuration allowing to generate and fetch scratch orgs from scratch org pool
{
"maxScratchOrgsNumber": 10,
"storageService": "kvdb.io"
}
When pool scratch org is less than this number, it is deleted and another one is created
Maximum number of active scratch orgs in the scratch org pool
Maximum number of scratch orgs to create in one CI job
Remote service allowing to store scratch org pool details
Name of the git branch corresponding to production environment
"master"
"main"
"production"
Identifier for the project (can be the client and project)
"MyClientMyProject"
"GoogleGmail"
"AppleIWatch"
Name of the git branch where retrofit merge requests targets to
"preprod"
"dev"
"maintenance"
When calling hardis:org:retrieve:sources:retrofit, list of files to ignore (discard just after retrieve)
No Additional Items[
"force-app/main/default/applications/MyAppIWantToManageInProduction.app-meta.xml",
"force-app/main/default/flexipages/MyFlexipageWithDashboards.flexipage-meta.xml"
]
WARNING: Use with caution, only in branch scoped config ! Can be a list of test classes if testLevel=RunSpecifiedTests, or a regex if testLevel=RunRepositoryTests
"MyTestClass1,MyTestClass2"
"^(?!FLI|fli|BatchableCodeSolvaTest|BatchableRemoveCodeSolvaTest|HelperNovaxelApiTest).*"
Apex scripts to call after scratch org initialization
No Additional Items[
"scripts/apex/init-scratch.apex",
"scripts/apex/init-custom-settings.apex"
]
Defines the lifespan of the scratch org in number of days, from 1 to 30
Value must be greater or equal to 1
and lesser or equal to 30
Instance host name to allow SFDMU to deploy data in a production org
"myproject.force.com"
WARNING: Use with caution, only in branch scoped config ! Do not check code coverage for a deployment
These profiles will not be reformatted by command hardis:project:clean:minimizeprofiles
No Additional Items[
"MyClient Customer Community Login User",
"MyClientPortail Profile"
]
Defines if sfdx-hardis will propose to upgrade local .forceignore file
Defines if sfdx-hardis will propose to upgrade local .gitignore file
Salesforce username used by CI for deployment or backups
"deployments@myclient.com"
"deployments@google.fr"
"deployments@apple.com"
Does not make the deployment job fail if apex tests code coverage is failing
WARNING: Use with caution, only in branch scoped config ! You can override default test level for deployments for special use cases, for example when you have SeeAllData=true you can use RunRepositoryTests associated with a regex in runtests option
"RunRepositoryTests"
"RunSpecifiedTests"
Defines if sfdx-hardis will deploy in delta from minor to major branches
Define if smart deployment tests will be activated and run test classes only if necessary (see more in hardis:project:deploy:smart documentation
Ignore profiles or permission sets
"Profile"
"Profile:ProfileA"
"PermissionSet"
"PermissionSet:PermissionSetA, Profile:ProfileA"