# Support for Custom Workflow

The following outlines how the before provisioning rule can be used to modify the provisioning plan (as provisioning is sent out), for a custom workflow use case.

## Before Provisioning Rule - Custom Workflow

SailPoint has configured a key named `CustomRequestType` that can be used to provision the custom request type. In the before provisioning rule you can set this key with the request type that you want to be provisioned in SAP. For example, if you want to set `028` in the request type, you will set it by using the following:

```text
attrRequest.setName("CustomRequestType");
attrRequest.setOperation(ProvisioningPlan.Operation.Set);
attrRequest.setValue("028");
```

## Custom Type for Certification

If you want to provision the custom request type when a certification is done, use the before provisioning rule to set the `CustomRequestType` key. You can check to see if the request is for certification by using the following line:

```text
String source = plan.get("source");
```

If the source equals certification, you can set the `CustomRequestType` in the attribute request, by using the following:

```text
if ("Certification".equals(source)) {
     log.warn(" Inside Certification ");
      AttributeRequest attrRequest = new ProvisioningPlan.AttributeRequest();
      attrRequest.setName("CustomRequestType");
      attrRequest.setOperation(ProvisioningPlan.Operation.Set);
      attrRequest.setValue("028");
}
```

A Sample provisioning plan for certification after this rule will look like the following:

```xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE ProvisioningPlan PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<ProvisioningPlan nativeIdentity="SAMEER/AHMED" targetIntegration="SAPGRCNew" trackingId="26a76b714cba4ba29b63efb16d488179">
  <AccountRequest application="SAPGRCNew" nativeIdentity="SAMEER/AHMED" op="Modify">
    <AttributeRequest name="Roles" op="Remove" trackingId="7f0000018b3c1bf8818b427e6a5b3fbd, 7f0000018b3c1bf8818b427e6a4d3fbc">
      <Value>
        <List>
          <String>SELF~~0050568569A01EDB82A956794BCE8C77</String>
          <String>SELF~~0050568569A01EDB82AA25091DEECC77</String>
        </List>
      </Value>
    </AttributeRequest>
    <AttributeRequest name="CustomRequestType" op="Set" value="028"/>
  </AccountRequest>
  <Attributes>
    <Map>
      <entry key="source" value="Certification"/>
      <entry key="sourceId" value="7f0000018b3c1bf8818b427d32123fba"/>
      <entry key="sourceName" value="Application Owner Access Review for SAPGRCNew"/>
    </Map>
  </Attributes>
  <Requesters>
    <Reference class="sailpoint.object.Identity" id="c0a81d9489b013d08189b0441fc900ff" name="spadmin"/>
  </Requesters>
</ProvisioningPlan>
```
