@cgi-fr/salesforce-toolbox
v0.2.4
Published
A plugin for SFDX to make Salesforce developers' life easier ! Made by Philippe Planchon for CGI©.
Downloads
62
Readme
@cgi-fr/salesforce-toolbox
A plugin for SFDX to make Salesforce developers' life easier ! Made by Philippe Planchon for CGI ©.
Updating local profile or translation metadata file according to a dev org can be very painful : you have to build a manifest with all needed metadata, then retrieve it, and then you may have to check every single profile or translation file to stage and/or revert all modifications you need or don't need to save. This is why I created this plugin : it automates all these steps.
This plugin updates your profile or translation metadata files from your SFDX project with permissions/translations retrieved from a secific Salesforce org.
You only have to decide what should be retrieved, and for this purpose you need to write a configuration file. Once this configuration file is ready, you just have to launch the needed plugin command and wait for it to update your profiles or translations files. It will update them only for permissions/translations you asked to update, leaving all the rest as it was before.
This plugin doesn't create or delete any profile from your local SFDX project, it can only update existing ones. It creates/updates/deletes translation files.
Menu
- Menu
- Disclaimer
- Installation
- Profile update Configuration File
- Translation update Configuration File
- Commands
Disclaimer
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Installation
$ sfdx plugins:install @cgi-fr/salesforce-toolbox
Profile update Configuration File
A configuration file is needed to tell plugin what permissions have to be retrieved and updated on your local profiles.
Run command sfdx CGI:profiles:initConfig
to generate one, and then edit it.
When you give a name for any element (sObject name, custom field name, apex page name, etc...), the plugin expects the exact API name of this element (case sensitive).
Here is a minimal example to retrieve Object Permission for Account object and Field Level Security (FLS) for all fields in Contact object :
{
"sObjects": [
{
"apiName": "Account",
"retrieveObjectPermissions": true
},
{
"apiName": "Contact",
"fields": {
"allPermissions": true
}
}
]
}
You can also tell what specific FLS you want to update :
{
"sObjects": [
{
"apiName": "Account",
"fields": {
"permissionsFor": [
"Description",
"my_customField__c"
]
}
}
]
}
Or tell other Object-related permissions to retrieve :
{
"sObjects": [
{
"apiName": "Account",
"retrieveRecordTypeVisibilities": true,
"retrieveLayoutAssignments": true
}
]
}
You can also retrieve non-object-related permissions, here is a full example of what this plugin can retrieve :
(This is the config file generated by the command sfdx CGI:profiles:initConfig
)
{
"sObjects": [
{
"apiName": "StandardsObject1",
"retrieveObjectPermissions": false,
"retrieveRecordTypeVisibilities": true,
"retrieveLayoutAssignments": true,
"fields": {
"permissionsFor": [
"standardFieldA",
"customFieldB__c"
]
}
},
{
"apiName": "CustomsObject2__c",
"retrieveObjectPermissions": true,
"retrieveRecordTypeVisibilities": false,
"retrieveLayoutAssignments": false,
"fields": {
"allPermissions": true
}
}
],
"apexClasses": {
"allPermissions": false,
"permissionsFor": [
"AP01_MyApexClass",
"AP02_MyOtherApexClass"
]
},
"apexPages": {
"allPermissions": false,
"permissionsFor": [
"VFP01_My_Visualforce_Page",
"VFP02_TheOtherOne"
]
},
"customApplications": {
"allPermissions": false,
"permissionsFor": [
"App1",
"App2"
]
},
"customMetadataTypes": {
"allPermissions": false,
"permissionsFor": [
"cmt1__mdt",
"cmt2__mdt"
]
},
"customPermissions": {
"allPermissions": false,
"permissionsFor": [
"custo_perm_1",
"custo_perm_2"
]
},
"customSettings": {
"allPermissions": false,
"permissionsFor": [
"custo_set_1",
"custo_set_2"
]
},
"customTabs": {
"allPermissions": false,
"permissionsFor": [
"custo_tab_1",
"custo_tab_2"
]
},
"userPermissions": {
"allPermissions": false,
"permissionsFor": [
"custo_tab_1",
"custo_tab_2"
]
},
"externalDataSource": {
"allPermissions": false,
"permissionsFor": [
"ext_source_1",
"ext_source_2"
]
},
"loginIpRanges": true,
"loginHours": true
}
Translation update Configuration File
A configuration file is needed to tell plugin what translations have to be retrieved and created/updated/deleted regarding your local translation files.
Run command sfdx CGI:translations:initConfig
to generate one, and then edit it.
When you give a name for any element (sObject name, custom field name, custom label name, etc...), the plugin expects the exact API name of this element (case sensitive).
Here is a minimal example to retrieve object renamed translations for Account sObject and all field translations on Contact sObject :
{
"sObjects": [
{
"apiName": "Account",
"retrieveObjectRenameTranslations": true
},
{
"apiName": "Contact",
"fields": {
"allTranslations": true
}
}
]
}
You can also tell what specific field translations you want to update :
{
"sObjects": [
{
"apiName": "Account",
"fields": {
"translationsFor": [
"standardFieldA",
"customFieldB__c"
]
}
}
]
}
You can also retrieve non-object-related translations, here is a full example of what this command can retrieve :
(This is the config file generated by the command sfdx CGI:translations:initConfig
)
{
"sObjects": [
{
"apiName": "sObject1",
"fields": {
"allTranslations": true
}
},
{
"apiName": "sObject2",
"retrieveObjectRenameTranslations": false,
"fields": {
"allTranslations": false,
"translationsFor": [
"standardFieldA",
"customFieldB__c"
]
},
"layouts": {
"allTranslations": false,
"translationsFor": [
"layout1",
"layout2"
]
},
"fieldSets": {
"allTranslations": false,
"translationsFor": [
"fieldSet1",
"fieldSet2"
]
},
"quickActions": {
"allTranslations": false,
"translationsFor": [
"quickAction1",
"quickAction2"
]
},
"recordTypes": {
"allTranslations": false,
"translationsFor": [
"record_type_1",
"record_type_2"
]
},
"sharingReasons": {
"allTranslations": false,
"translationsFor": [
"sharingReason1",
"sharingReason2"
]
},
"validationRules": {
"allTranslations": false,
"translationsFor": [
"vr01",
"vr02"
]
},
"webLinks": {
"allTranslations": false,
"translationsFor": [
"button1",
"link2"
]
}
}
],
"customApplications": {
"allTranslations": false,
"translationsFor": [
"customApp1",
"customApp2"
]
},
"customLabels": {
"allTranslations": false,
"translationsFor": [
"customLabel1",
"customLabel2"
]
},
"flows": {
"allTranslations": false,
"translationsFor": [
"flow1",
"flow2"
]
},
"globalQuickActions": {
"allTranslations": false,
"translationsFor": [
"globalQuickActions1",
"globalQuickActions2"
]
},
"reportTypes": {
"allTranslations": false,
"translationsFor": [
"reportTypes1",
"reportTypes2"
]
}
}
Commands
sfdx CGI:profiles:initConfig
sfdx CGI:profiles:update
sfdx CGI:translations:initConfig
sfdx CGI:translations:update
sfdx CGI:profiles:initConfig
Initialize the config file to run 'sfdx CGI:profiles:update' command
USAGE
$ sfdx CGI:profiles:initConfig [--json]
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Initialize the config file to run 'sfdx CGI:profiles:update' command
EXAMPLES
$ sfdx CGI:profiles:initConfig
See code: src/commands/CGI/profiles/initConfig.ts
sfdx CGI:profiles:update
Update all profiles with permissions retrieved from a specified Org, according to the config file.
USAGE
$ sfdx CGI:profiles:update -o <value> [--json] [-c <value>]
FLAGS
-c, --config=<value> Path to the config file - Optionnal. If not provided, it will be loaded from the default
location. If it does not exist, throw an error.
-o, --target-org=<value> (required) Username or alias of the target org.
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Update all profiles with permissions retrieved from a specified Org, according to the config file.
EXAMPLES
$ sfdx CGI:profiles:update --target-org [email protected] --config ./config.json
$ sfdx CGI:profiles:update -o myOrgAlias -c ./config.json
$ sfdx CGI:profiles:update
See code: src/commands/CGI/profiles/update.ts
sfdx CGI:translations:initConfig
Initialize the config file to run 'sfdx CGI:translations:update' command
USAGE
$ sfdx CGI:translations:initConfig [--json]
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Initialize the config file to run 'sfdx CGI:translations:update' command
EXAMPLES
$ sfdx CGI:translations:initConfig
See code: src/commands/CGI/translations/initConfig.ts
sfdx CGI:translations:update
Update translations retrieved from a specified Org, according to the config file, for all active language in the target org.
USAGE
$ sfdx CGI:translations:update -o <value> [--json] [-c <value>]
FLAGS
-c, --config=<value> Path to the config file - Optionnal. If not provided, it will be loaded from the default
location. If it does not exist, throw an error.
-o, --target-org=<value> (required) Username or alias of the target org.
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Update translations retrieved from a specified Org, according to the config file, for all active language in the
target org.
EXAMPLES
$ sfdx CGI:translations:update --target-org [email protected] --config ./config.json
$ sfdx CGI:translations:update -o myOrgAlias -c ./config.json
$ sfdx CGI:translations:update
See code: src/commands/CGI/translations/update.ts