Skip to content

Commit

Permalink
Document the org_config Object (#3490)
Browse files Browse the repository at this point in the history
To fix #2424, I have created a document called `org_config.md` under
docs, and added this paragraph to the `reference.md` chapter.

At the same time, I fixed the name of the env-var-reference chapter
which was incorrectly referenced in `reference.md` and, thus, did not
appear in the generated documentation.

I scoured the source code for these attributes, leaving out the
attributes with names starting with an underscore, as well as
`salesforce_client` and `tooling` which sound like reserved for internal
use.
I guessed the use of most of the attributes from their name. When in
doubt, I left attributes with unknown use in a separate list.

---------

Co-authored-by: James Estevez <jestevez@salesforce.com>
Co-authored-by: James Estevez <j@jstvz.dev>
  • Loading branch information
3 people authored Jan 17, 2025
1 parent 1225b76 commit 53f807b
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 1 deletion.
1 change: 1 addition & 0 deletions AUTHORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,4 @@ For example:
* Gustavo Tandeciarz (dcinzona)
* Chandler Anderson (zenibako)
* Ben French (BenjaminFrench)
* Rupert Barrow (rupertbarrow)
59 changes: 59 additions & 0 deletions docs/org_config-reference.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# org_config Object Reference

The `org_config` object can be used in the `cumulusci.yml` file to read a large number number of attributes of the Salesforce org currently used. For example, in a [custom flow step](https://cumulusci.readthedocs.io/en/stable/config.html#add-a-flow-step), you can use a `when` clause to adapt the behavior of the new step to the type of org (scratch org or not) by referencing the `org_config.scratch` attribute.

The following information is documented here in the application's source code :
/~https://github.com/SFDO-Tooling/CumulusCI/blob/main/cumulusci/core/config/org_config.py

## org_config Object Attributes

- `access_token` : access token currently used to authenticate with Salesforce
- `installed_packages` : comma-separated list of package names; a `dict` mapping a namespace or metadata package ID (starts with `033`) to the installed package version(s) matching that identifier. All values are lists, because multiple second-generation packages may be installed with the same namespace. The beta version of a package is represented as "1.2.3b5", where 5 is the build number.
- `instance_url` : eg `https://crazy-demo.scratch.my.salesforce.com`
- `instance_name` : eg `crazy-demo`
- `is_advanced_currency_management_enabled` : `true` or `false`
- `is_multiple_currencies_enabled`: `true` or `false`
- `is_person_accounts_enabled` : `true` or `false`
- `is_sandbox` : `true` if the org is a sandbox
- `is_survey_advanced_features_enabled`: `true` or `false`
- `lightning_base_url` : base url ending with `.lightning.force.com`
- `namespace` : namespace of the org
- `namespaced` : `true` if the org has a namespace
- `org_id` : Organization ID of the Salesforce org
- `org_type` : eg "Enterprise Edition" or "Developer Edition"
- `organization_sobject` : The Organization object (see the [Salesforce documentation for the Organization SObject](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_organization.htm)) for the org.
- `scratch` : `True` when the org is a scratch org.
- `start_url`: the frontdoor URL that results in an instant login, like `https://mydomain.my.salesforce.com/secur/frontdoor.jsp?sid=...`
- `user_id` : user ID of the current Salesforce user
- `userinfo`: user OAuth2 information (see https://help.salesforce.com/s/articleView?id=sf.remoteaccess_using_userinfo_endpoint.htm)
- `username` : username of the current Salesforce user

## Other org_config Object Attributes

- `config_file`
- `config_name`
- `latest_api_version`
- `name`
- `salesforce_client`
- `sfdx_alias`

## org_config Object Methods

- `has_minimum_package_version(package_identifier, version_identifier)`: `true` if the org has a version of the specified package that is equal to or newer than the supplied version identifier.
The package identifier may be either a namespace or a `033` MetadataPackage ID.
The version identifier should be in "1.2.3" or "1.2.3b4" format.

`when` expressions can use the `has_minimum_package_version` method to check if a package is installed with a sufficient version.

For example:
`when: org_config.has_minimum_package_version("namespace", "1.0")`

See a real-life example here : https://trailhead.salesforce.com/fr/trailblazer-community/feed/0D54V00007erukZSAQ

- `get_community_info(community_name, force_refresh=False)`: Returns the community information for the given community (see https://developer.salesforce.com/docs/atlas.en-us.chatterapi.meta/chatterapi/connect_responses_community.htm)

An API call will be made the first time this method is used,
and the return values will be cached. Subsequent calls will
not call the API unless the requested community name is not in
the cached results, or unless the force_refresh parameter is
set to True
3 changes: 2 additions & 1 deletion docs/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ maxdepth: 1
cheat-sheet
cumulusci_tasks
flows
env_var_reference
env-var-reference
org_config-reference
```

0 comments on commit 53f807b

Please sign in to comment.