Newer Version Available

This content describes an older version of this product. View Latest

Generate Work Orders on Maintenance Plans with Apex

The Generate Work Orders action on maintenance plans can also be called using Apex code. The following code sample creates work order records by making an Apex callout to the generateWorkOrder action REST API resource.
You can use this code sample in several different ways:
  • Add it to Apex controller code for an Aura component, and tie it to a custom UI or app functionality
  • Use it in an Apex trigger to semi-automate the creation of the work orders (for example, whenever a maintenance plan is created or updated)
  • Use it in an Apex REST service to create work orders when called from an external integration service
  • This code sample assumes that you have remote site settings enabled to make REST callouts. For more information, see Adding Remote Site Settings.
  • The mock maintenance plan ID in the code sample is 1MPR000000000Bu.
  • This code sample references API version 45.0, but can be used with any version from 40.0 onward.

Note

API Endpoint (v45.0): /services/data/v45.0/actions/standard/generateWorkOrders

1String salesforceHost = System.Url.getSalesforceBaseURL().toExternalForm();
2String url = salesforceHost + '/services/data/v45.0/actions/standard/generateWorkOrders';
3// Create HTTP request
4HttpRequest request = new HttpRequest();
5request.setEndpoint(url);
6request.setMethod('POST');
7request.setHeader('Content-Type', 'application/json;charset=UTF-8');
8request.setHeader('Authorization', 'OAuth ' + UserInfo.getSessionId());
9// Set the body as a JSON object
10request.setBody('{"inputs" : [{"recordId" : "1MPR000000000Bu"}]}');
11Http http = new Http();
12HttpResponse response = http.send(request);
13// Parse the JSON response
14if (response.getStatusCode() != 201) {
15    System.debug('The status code returned was not expected: ' +
16    response.getStatusCode() + ' ' + response.getStatus());
17} else {
18    System.debug(response.getBody());
19}