| description | Commands for managing Business Manager access roles, user assignments, and permissions on B2C Commerce instances. |
|---|
Commands for managing instance-level Business Manager access roles on B2C Commerce instances. These are distinct from Account Manager roles which manage roles at the Account Manager level.
BM roles commands require OAuth authentication with OCAPI permissions for the /roles resource.
| Resource | Methods |
|---|---|
/roles |
GET |
/roles/* |
GET, PUT, DELETE |
/roles/*/users |
GET, PUT, DELETE |
export SFCC_CLIENT_ID=your-client-id
export SFCC_CLIENT_SECRET=your-client-secretFor complete setup instructions, see the Authentication Guide.
List all Business Manager access roles on an instance.
b2c bm roles list [--count <n>] [--start <n>]| Flag | Description |
|---|---|
--count, -n |
Number of roles to return (default 25) |
--start |
Start index for pagination (default 0) |
Uses global instance and authentication flags.
b2c bm roles list --server my-sandbox.demandware.net
b2c bm roles list --count 50 --jsonGet details of a specific access role.
b2c bm roles get <role> [--expand <expansion>]| Argument | Description |
|---|---|
role |
Role ID (e.g. "Administrator") |
| Flag | Description |
|---|---|
--expand, -e |
Expansions to apply (e.g. users, permissions). Can be specified multiple times. |
b2c bm roles get Administrator
b2c bm roles get Administrator --expand users
b2c bm roles get Administrator --jsonCreate a new custom access role on an instance.
b2c bm roles create <role> [--description <text>]| Argument | Description |
|---|---|
role |
Role ID to create |
| Flag | Description |
|---|---|
--description, -d |
Description for the role |
b2c bm roles create ContentEditor --description "Role for content editors"
b2c bm roles create ContentEditor --json::: warning Reserved role IDs ("Support", "Business Support") cannot be created. :::
Delete a custom access role from an instance.
b2c bm roles delete <role>| Argument | Description |
|---|---|
role |
Role ID to delete |
b2c bm roles delete ContentEditor::: warning System roles (e.g. "Administrator") cannot be deleted. :::
Assign a user to an access role on an instance.
b2c bm roles grant <login> --role <role>| Argument | Description |
|---|---|
login |
User login (email) |
| Flag | Description |
|---|---|
--role, -r |
Role ID to grant (required) |
b2c bm roles grant user@example.com --role Administrator
b2c bm roles grant user@example.com --role ContentEditor --jsonUnassign a user from an access role on an instance.
b2c bm roles revoke <login> --role <role>| Argument | Description |
|---|---|
login |
User login (email) |
| Flag | Description |
|---|---|
--role, -r |
Role ID to revoke (required) |
b2c bm roles revoke user@example.com --role AdministratorGet permissions for an access role.
b2c bm roles permissions get <role> [--output <file>]| Argument | Description |
|---|---|
role |
Role ID (e.g. "Administrator") |
| Flag | Description |
|---|---|
--output, -o |
Write full permissions JSON to a file for editing |
# View summary
b2c bm roles permissions get Administrator
# Export to file for editing
b2c bm roles permissions get Administrator --output admin-perms.json
# Get raw JSON
b2c bm roles permissions get Administrator --jsonSet (replace) all permissions for an access role from a JSON file.
b2c bm roles permissions set <role> --file <path>| Argument | Description |
|---|---|
role |
Role ID |
| Flag | Description |
|---|---|
--file, -f |
JSON file containing permissions (role_permissions schema) (required) |
# Export, edit, then apply
b2c bm roles permissions get MyRole --output perms.json
# ... edit perms.json ...
b2c bm roles permissions set MyRole --file perms.json::: warning
This command replaces all existing permissions for the role. Use permissions get --output first to ensure you have the complete set.
:::
The JSON file follows the OCAPI role_permissions schema with four sections:
{
"functional": {
"organization": [{"name": "PERMISSION_NAME", "type": "functional", "value": "ACCESS"}],
"site": []
},
"module": {
"organization": [{"application": "bm", "name": "ModuleName", "type": "module", "system": true, "value": "ACCESS"}],
"site": []
},
"locale": {
"unscoped": [{"locale_id": "default", "type": "locale", "value": "ACCESS"}]
},
"webdav": {
"unscoped": [{"folder": "Catalogs", "type": "webdav", "value": "ACCESS"}]
}
}