---
schema_version: "1"
id: d34d262aa0d5ca3e14a572484500b562953c37ce03facc97ee592d7e6ba3fb20
title: Create Usage-Based Maintenance
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/service/264-0-0/fs_create_usage_based_rfc.md
canonical_url: https://help.salesforce.com/s/articleView?id=service.fs_create_usage_based_rfc.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 27fd09c7564480eb88fde5d070b84c3e710cc3008acef228c86a4c5599d48be3
description: Use maintenance work rules to create work orders and schedule preventive maintenance based on asset usage.
products:
  - Field Service
release: "264"
---
# Create Usage-Based Maintenance

Use maintenance work rules to create work orders and schedule preventive maintenance based on asset usage.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: Lightning Experience</td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">The Field Service core features, managed package, and mobile app are available in <strong>Enterprise</strong>, <strong>Unlimited</strong>, and <strong>Developer</strong> Editions.</td></tr></tbody></table>

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small permission">
          <colgroup>
            <col style="width:50%">
            <col style="width:50%">
          </colgroup>
          <thead class="slds-text-title_caps ">
            <tr class="">
              <th scope="colgroup" class="slds-cell-wrap" colspan="2" style="text-align:center;vertical-align:top;" id="d173826e73">User Permissions Needed</th>
            </tr>
          </thead>
          <tbody>
            <tr class="">
              <td data-label="User Permissions Needed" class="slds-cell-wrap" style="vertical-align:top;" headers="d173826e73 ">To view, create, and update recordset filter criteria</td>

              <td class="slds-cell-wrap" style="vertical-align:top;" headers="d173826e73 ">
                <p>View, create, and edit on Service Appointments, Shifts, Recordset Filter Criteria, and
                  Recordset Filter Criteria Rules</p>
                <p>Edit on the NextOccurrence field on the Asset Filtered
                  Object</p>
                <p>Delete on Recordset Filter Criteria Rules</p>
                <p style="margin-bottom:0;">View access on the Source
                  Object, Filtered Object, and Filtered Object fields</p>
              </td>

            </tr>
          </tbody>
        </table>

1. Create the Recordset Filter Criteria. From the App Launcher, open Recordset Filter Criteria and click **New**.
2. Enter a name and description for the criteria.
3. Select **Maintenance Work Rule** as the Source Object and **Asset** as the Filtered Object.
4. Select whether the filter criteria is valid if all or at least one of the conditions is met.
5. Add filter conditions.
    1. Select a rule type. Select **Usage** for the type to define a recurring condition at a particular frequency of usage.
    2. **Usage Field**: Select a field that determines whether the conditions are true.
    3. **Next Occurrence Field**: This field’s value is compared to the Usage field to determine whether the rule is true.
    4. **Frequency**: Enter a value to set a frequency for maintenance.
    5. **First Occurrence**: Set the start value. To determine whether the rule is true, this value is compared to the Usage Field value.
    6. **Last Occurrence**: (Optional) Set the end value.
6. To add another condition, click **\+ Add Condition**. Continue adding criteria rules as needed.
7. To generate work orders ahead of the target usage value, select **Add lead-time to usage-based work rules**. In the **Usage Rate** field, enter the daily usage rate of the asset. The unit for the usage rate must be per day.
8. Save the filter criteria.

- **[Guidelines for Usage-Based Maintenance](https://help.salesforce.com/s/articleView?id=service.fs_create_usage_based_rfc.htm&release=264.0.0&type=5)**  
    To optimize technician productivity and increase uptime and mean time to failure of equipment, create criteria-based maintenance work rules for maintenance assets.

## Define the Generation Schedule

After you define your usage thresholds, use a criteria-based rule to link that logic to the asset and determine how the next maintenance milestone is calculated.

1. On the Maintenance Asset’s related tab, select **New Maintenance Work Rule**.
2. In Maintenance Work Rule Type, select **Criteria-Based**.
3. In Recordset Filter Criteria, search for and select the recordset filter criteria to use.
4. Use the **Generate on a floating schedule** checkbox to determine if the next work order is triggered by a fixed asset milestone or the actual usage at the time of service completion.
    
    Fixed Schedule (Unselected): Work orders are created at strict usage intervals based on the asset's lifetime counter. Example: If the frequency is 5,000 miles, milestones are fixed at 5k, 10k, and 15k. If the 5k service is completed late at 6,000 miles, the next work order is still triggered when the asset hits 10,000 miles.
    
    Floating Schedule (Selected): The maintenance clock is reset by adding the frequency to the asset's usage reading at the moment the previous work order was completed. Example: If the frequency is 5,000 miles and the service is completed late at 6,000 miles, the next milestone "floats" to 11,000 miles (6k completion + 5k frequency).
5. Complete the remaining maintenance work rule details as appropriate, and save your changes.

## Guidelines for Usage-Based Maintenance

To optimize technician productivity and increase uptime and mean time to failure of equipment, create criteria-based maintenance work rules for maintenance assets.

### Next Work Order Generation

Usage-based maintenance work rules behave as though **Generate new batch upon completion** is set. This behavior applies to the creation of work orders, and, when one work order line item per asset is selected, work order line items.

For example, if an incomplete work order is created from a usage-based maintenance work rule, no new work orders are generated until the active work order is completed. A work order is considered complete when its status is Cannot Complete, Canceled, Completed, or Closed. After the work order is completed, if the criteria are true at the next work order generation, a new work order is generated.

Work orders are triggered based on the value in the **Next Occurrence** field. If Frequency is < 0, when the value of **Usage Field** is LESS than or equal to the **Next Occurrence** field and is between the values of the **First Occurrence Field** and **Last Occurrence Field**, a work order is generated.

The **Next Occurrence** field is updated with the new value: **Next Occurrence** = Current **Next Occurrence** + **Frequency**.

![Example](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_field_service-264-0-0-production-enus/3f7dceb9-dd70-454a-b49e-bbb4526a158d/images/icon_example.png)

Example

You have a usage rule of every 1,000 hours that starts at 1,000 hours.

When the usage value moves from 982 to 1024, a work order is generated, and the Next **Occurrence Field** value is updated to 2000 hours.

If the usage moves from 1999 to 2030 and a work order is still open, no new work order is created. However, when the existing work order is complete, a new work order is generated and the **Next Occurrence Field** value is updated to 3000 hours. The **Next Occurrence Field** value is updated every time a work order is generated.

If **One work order line item per asset** is selected on the maintenance plan, this example applies in the same way to work order line item generation.

### Sort Order

When applying sort order to criteria-based maintenance rules, the rule with the higher sort order takes priority.

![Example](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_field_service-264-0-0-production-enus/3f7dceb9-dd70-454a-b49e-bbb4526a158d/images/icon_example.png)

Example

You have two usage rules.

- Rule1 tracks oil changes and maintains every 5 K, starting at 5 K, sort order = 2, and **NextOccurrenceField** is **NextOilChangeMileage**.
- Rule2 tracks oil changes and tire rotation and maintains every 10 K, starting at 10 K, sort order = 1, and **NextOccurrenceField** is **NextOilandTireChangeMileage**.

When a car first reaches 5 K, Rule1 generates a work order at 5 K and updates the **NextOilChangeMileage** to 10 K. When the car reaches 10 K, Rule 1 and Rule 2 try to generate a work order for the next day. However, only Rule 2 generates because it has a higher priority. Rule1 updates its **NextOilChangeMileage** to 15 K, and Rule2 updates its **NextOilandTireChangeMileage** to 20 K.

You can apply sort order within calendar-based rules or criteria-based rules. However, you can’t apply sort order across calendar-based and criteria-based rules.

### Floating Work Order Generation

With **Generate on a Floating Schedule**, work orders that are completed ahead of or behind schedule generate the subsequent work order based on the recurrence cadence. Floating work orders are based on the usage of an asset and can be created only with maintenance work rules.

For example, a floating work order with a six-month recurrence cadence that’s completed in May is next scheduled for November. With a fixed schedule, recurring work orders are scheduled at exact intervals based on the work order start date. When you’re generating work orders on a floating schedule, the **NextOccurrence** field is updated with the fixed schedule and no work order is generated. After the work order status is updated to **Closed** or **Completed**, the **NextOccurrence** field is updated with the floating schedule based on the current **UsageField** value.

Each status is mapped to a status category. When the work order is updated to a status mapped to the **Closed** or **Completed** status category, the floating work order generation is triggered. Additionally, the recurrence cadence for the work orders is adjusted when the work order or work order line item’s status category is changed to **Closed** or **Completed**. When a work order is closed and marked as **Completed**, the **NextOccurrence** field on all upcoming work orders is updated.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_field_service-264-0-0-production-enus/3f7dceb9-dd70-454a-b49e-bbb4526a158d/images/icon_note.png)

Note The floating work order generation is only triggered if the status is mapped to either the **Closed** or **Completed** Status Category. If you don’t map the status to one of those status categories, the next milestone recalculation and update won't happen in the Filtered Object (Asset).

To display this field, from **Setup** enter **Field Service Settings** and select **Update the work order generation based on the completion date of the previous work order**.

### Considerations for Work Order Lead Time

Lead time is used to create a **Suggested Maintenance Date** for fixed and floating work orders ahead of the targeted usage value.

To find the **Suggested Maintenance Date** for a UsageCounter rule type, we use this formula if **NextOccurrence** isn’t empty:

```
SMD offset by days = (NextOccurrence - CriteriaField) / UsageRate
```

If **NextOccurrence** is null, we use this formula:

```
SMD offset by days = (FirstOccurrence - CriteriaField) / UsageRate
```

If the asset’s usage criteria is greater than the expected usage rate (**Next Occurrence**), then the **Suggested Maintenance Date** for the work order is today since the value is greater than or equal to zero. The next occurrence field is updated after closing the work order when lead time rules are used.

For a UsageDuration rule, lead time is the same as the generation horizon.

![With Usage Counter Only](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_field_service-264-0-0-production-enus/3f7dceb9-dd70-454a-b49e-bbb4526a158d/images/icon_example.png)

With Usage Counter Only

Maintenance Plan:

**Generation Horizon** = 30

Recordset Filter Criteria:

- **RFCR1**: Usage Counter
- **UsageField**: UsageField
- **NextOccurrence**: NextOccurrenceField
- **Frequency**: 4000
- **FirstOccurrence**: 4000
- **Operator**: \>=
- **UsageRate**: UsageRateField

If the **NextOccurrence** is null, any value greater than 3550 results in true evaluation for this RFCR.

For SMD calculation, let us consider these subexamples:

Asset:

- **UsageField**: 3550
- **NextOccurrenceField**: null
- **UsageRateField**: 15
- **SMD**
    
    \= (4000-3550)/15
    
    \= 30 days from today

Asset

- **UsageField**: 3880
- **NextOccurrenceField**: 4000
- **UsageRateField**:15
- **SMD**
    
    \= (4000-3880)/15
    
    \= 8 days from today

Asset

- **UsageField**: 3960
- **NextOccurrenceField**: 4000
- **UsageRateField**: 15
- **SMD**
    
    \= (4000-3960)/15
    
    \= 3 days from today

Asset

- **UsageField**: 4200
- **NextOccurrenceField**: 4000
- **UsageRateField**: 15
- **SMD** = today

![With Usage Duration Only](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_field_service-264-0-0-production-enus/3f7dceb9-dd70-454a-b49e-bbb4526a158d/images/icon_example.png)

With Usage Duration Only

Maintenance Plan:

**Generation Horizon** = 30

Recordset Filter Criteria:

- **RFCR1**: Usage Duration
- **UsageField**: UsageField
- **NextOccurrence**: NextOccurrenceField
- **Frequency**: 365
- **FirstOccurrence**: 365
- **Operator**: \>=

Asset

- **UsageField**: 350
- **NextOccurrenceField**: null
- **SMD**
    
    \= 30 (Same as Generation Horizon)

![With Mix Rule Types](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_field_service-264-0-0-production-enus/3f7dceb9-dd70-454a-b49e-bbb4526a158d/images/icon_example.png)

With Mix Rule Types

Recordset Filter Criteria: AND

**RFCR1**: Usage Counter

- **UsageField**: UsageField1
- **NextOccurrence**: NextOccurrenceField1
- **Frequency**: 4000
- **FirstOccurrence**: 4000
- **Operator**: \>=
- **UsageRate**: UsageRateField

**RFCR2**: Usage Duration

- **UsageField**: UsageField2
- **NextOccurrence**: NextOccurrenceField2
- **Frequency**: 365
- **FirstOccurrence**: 365
- **Operator**: \>=

Asset

- **UsageField1**: 3960
- **NextOccurrenceField1**: 4000
- **UsageRateField**: 15
- **UsageField2**: 350
- **NextOccurrenceField2**: null

Internally, the SMD is evaluated for each RFCR. The SMD is determined based on the logical operator. In this example, each RFCR evaluates to the following lead time offset:

RFCR1.SMD = 3

RFCR2.SMD = 30

Since AND is the operator, the combined SMD = 30 (furthest offset). If we use OR instead of AND, the SMD becomes 3.

### Available for Maintenance Assets Only

You can add usage-based maintenance rules to maintenance assets only.

### Usage for Multiple Recordset Filter Criteria Rules

If you use the same usage parameter in multiple recordset filter criteria rules, you must use a different **Next Occurrence Field** for each recordset filter criteria rule.

![Example](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_field_service-264-0-0-production-enus/3f7dceb9-dd70-454a-b49e-bbb4526a158d/images/icon_example.png)

Example You have a minor maintenance for every 1-K hours and a major maintenance for every 5-K hours . Set up two recordset filter criteria, each with a recordset filter criteria rule. Both recordset filter criteria rules share a usage field: **OpHrsSinceInstall**. However, the minor recordset filter criteria rule and major recordset filter criteria rule refer to a different **NextOccurrenceField**. The minor recordset filter criteria rule triggers at 1 K, 2 K, 3 K, and so on. The major recordset filter criteria rule triggers at 5 K, 10K, 15 K, and so on.