# Step 13: Manage permission sets

## Provide permission sets

To provide permissions for standard objects and fields, run the following script once from the developer console. Note that this class is outside of the package.

{% code title="Permission script" %}

```
PermissionSet pr = new PermissionSet(Label='DRB2B Additional Permission set',Name='DRB2B_Additional_Permission_set');
        insert pr;
        System.debug('pr >'+pr);
        List<ObjectPermissions>  objectPermissionList = new List<ObjectPermissions>();
 
        ObjectPermissions objPermission = new ObjectPermissions();
        objPermission.PermissionsCreate=true;
        objPermission.PermissionsRead=true;
        objPermission.PermissionsEdit=true;
        objPermission.PermissionsDelete=true;
        objPermission.SobjectType='ORDER';
        objPermission.ParentId = pr.Id;
        objectPermissionList.add(objPermission);
 
        objPermission = new ObjectPermissions();
        objPermission.PermissionsCreate=true;
        objPermission.PermissionsRead=true;
        objPermission.PermissionsEdit=true;
        objPermission.PermissionsDelete=true;
        objPermission.SobjectType='Ordersummary';
        objPermission.ParentId = pr.Id;
        objectPermissionList.add(objPermission);
 
        objPermission = new ObjectPermissions();
        objPermission.PermissionsCreate=true;
        objPermission.PermissionsRead=true;
        objPermission.PermissionsEdit=true;
        objPermission.PermissionsDelete=true;
        objPermission.SobjectType='WebStore';
        objPermission.ParentId = pr.Id;
        objectPermissionList.add(objPermission);
 
        objPermission = new ObjectPermissions();
        objPermission.PermissionsCreate=true;
        objPermission.PermissionsRead=true;
        objPermission.PermissionsEdit=true;
        objPermission.PermissionsDelete=true;
        objPermission.SobjectType='WebCart';
        objPermission.ParentId = pr.Id;
        objectPermissionList.add(objPermission);
 
        objPermission = new ObjectPermissions();
        objPermission.PermissionsCreate=true;
        objPermission.PermissionsRead=true;
        objPermission.PermissionsEdit=true;
        objPermission.PermissionsDelete=true;
        objPermission.SobjectType='Product2';
        objPermission.ParentId = pr.Id;
        objectPermissionList.add(objPermission);
 
        objPermission = new ObjectPermissions();
        objPermission.PermissionsRead=true;
        objPermission.SobjectType='Account';
        objPermission.ParentId = pr.Id;
        objectPermissionList.add(objPermission);
 
        insert objectPermissionList;
        List<FieldPermissions> fieldPermissionList = new List<FieldPermissions>();
        //OrderSummary Object fields
        FieldPermissions fp= new FieldPermissions();
        //OrderItem Object fields
        fp.Field='OrderItem.TotalTaxAmount';//the name of new field
        fp.ParentId = pr.Id;
        fp.PermissionsRead=true;
        fp.SobjectType='OrderItem';
        fieldPermissionList.add(fp);
 
        fp= new FieldPermissions();
        fp.Field='Product2.Productcode';//the name of new field
        fp.ParentId = pr.Id;
        fp.PermissionsEdit=true;//
        fp.PermissionsRead=true;
        fp.SobjectType='Product2';
        fieldPermissionList.add(fp);
 
        fp= new FieldPermissions();
        fp.Field='Product2.StockKeepingUnit';//the name of new field
        fp.ParentId = pr.Id;
        fp.PermissionsEdit=true;//
        fp.PermissionsRead=true;
        fp.SobjectType='Product2';
        fieldPermissionList.add(fp);
 
        fp= new FieldPermissions();
        fp.Field='Product2.DisplayUrl';//the name of new field
        fp.ParentId = pr.Id;
        fp.PermissionsEdit=true;//
        fp.PermissionsRead=true;
        fp.SobjectType='Product2';
        fieldPermissionList.add(fp);
 
        fp= new FieldPermissions();
        fp.Field='Product2.QuantityUnitOfMeasure';//the name of new field
        fp.ParentId = pr.Id;
        fp.PermissionsEdit=true;//
        fp.PermissionsRead=true;
        fp.SobjectType='Product2';
        fieldPermissionList.add(fp);
 
        Insert fieldPermissionList;
```

{% endcode %}

## Sharing settings

Ensure that the Sharing Settings for the Order object are set to **Public Read/Write**. If the Order object is set to **Controlled by Parent**, the Sharing Settings for Account and Contract should be **Public Read/Write**.

![](https://3252901943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcnrT0Aw9SJXFncA6OzO2%2Fuploads%2FuZruD9g1NSKQCFXxYIQo%2FSharingsettings.PNG?alt=media\&token=a2508184-3907-46ab-aaf4-e4ca85af3320)

## Digital River permission sets

| Permission set                       | Description                                                                                                                          |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| Digital River Connector - Admin      | Assign this permission set to Admin users to access the **Digital River App Configuration** page and to update configurations in it. |
| DigitalRiver Connector - Shopper     | Assign this permission set to all Storefront users.                                                                                  |
| DigitalRiver Connector - Integration | Assign this permission set to the Integration users.                                                                                 |
| DigitalRiver Connector - Refunds     | Assign this permission set to customer service representatives (CSRs) who initiate the refunds.                                      |

## Assign users to a permission set

To assign users to a permission set:

1. Type **Permission Sets** in the **Search** field and press **Enter**.\
   ![](https://3252901943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcnrT0Aw9SJXFncA6OzO2%2Fuploads%2FicHyHUMuk1a5jPxhCAlP%2FPermission%20set%201.png?alt=media\&token=7ba8976e-7260-4b95-8f03-db3eadeb786f)
2. Click **Permission Sets**. The **Permission Sets** page appears.
3. In the **Permission Set Label** column, click the permission set you want to add users to.\
   ![](https://3252901943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcnrT0Aw9SJXFncA6OzO2%2Fuploads%2FKhbE6vFmMpp0UhM49vlx%2FPermission%20set%202.png?alt=media\&token=d941d498-5189-4af8-8fd9-a869d0b7719f)

   This example shows how to assign a **Digital River Connector – Admin** permission set to users. ![](https://3252901943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcnrT0Aw9SJXFncA6OzO2%2Fuploads%2FWkdkyv1UyuZhVqexGooG%2FPermission%20set%201.png?alt=media\&token=7ba8976e-7260-4b95-8f03-db3eadeb786f)
4. On the **Permission Set** page, click **Manage Assignments**.\
   ![](https://3252901943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcnrT0Aw9SJXFncA6OzO2%2Fuploads%2FxjDEtubU3pdYW7nucc4e%2FPermission%20set%204.png?alt=media\&token=a66479ab-a0e7-4c83-ae09-c9303ab5d15f)
5. Click **Add Assignments**.\
   ![](https://3252901943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcnrT0Aw9SJXFncA6OzO2%2Fuploads%2FjtAWTbVHIIET25kHaq0U%2FPermission%20set%205.png?alt=media\&token=fe58d76c-25d2-4d09-8b86-ae3cff8264f9)
6. Select one or more users who you want to assign to this permission set and click **Assign**. The assigned users now appear in the modified permission set.\
   ![](https://3252901943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcnrT0Aw9SJXFncA6OzO2%2Fuploads%2F01M8Uj3ov3b5wUTifmul%2FPermission%20set%206.png?alt=media\&token=6f2c1252-d26e-4e11-a4a9-0e94347d511b)

See the [Digital River permission sets table](https://docs.digitalriver.com/salesforce-lightning/salesforce-lightning-b2b-commerce-app-1.6/integrate-the-salesforce-lightning-app/step-13-manage-permission-sets) to repeat the above-mentioned steps for assigning relevant permission sets.
