---
schema_version: "1"
id: 54f608a132cdb5d73e9945b721d57ccc4a3f2d6e50a1329fecccbc1edb988769
title: Developing Custom Policies
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/pdk/1.8/policies-pdk-develop-custom-policies.md
canonical_url: https://docs.mulesoft.com/pdk/1.8/policies-pdk-develop-custom-policies
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 962db1960cdb1ea7453e710cf7edaea36df5f61341fa055f58a9a9eca25a349e
description: MuleSoft Documentation Site
release: "1.8"
latest: false
---
---
product: Omni Gateway Policy Development Kit (PDK)
version: 1.8
---

# Developing Custom Policies

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

After installing the [Prerequisites](https://docs.mulesoft.com/pdk/1.8/policies-pdk-prerequisites), you can develop custom policies by
using Omni Gateway Policy Development Kit (PDK).

The custom policy lifecycle consists of all the steps of developing a custom policy that occur in
PDK. The following steps do not include steps that occur outside of PDK, such as
[applying a policy](https://docs.mulesoft.com/pdk/1.8/policies-pdk-apply-policies), which is the same for all Omni Gateway policies.

After you [create a new project](https://docs.mulesoft.com/pdk/1.8/policies-pdk-create-project), you might iteratively complete some
steps. For example, while writing the policy’s source code, you might need to return to
[add additional parameters](https://docs.mulesoft.com/pdk/1.8/policies-pdk-create-schema-definition), or you might need to recompile
the policy after debugging the source code.

To create a custom policy with PDK, follow these steps:

1.  [Create a new project](https://docs.mulesoft.com/pdk/1.8/policies-pdk-create-project-overview).

2.  [Define a schema definition](https://docs.mulesoft.com/pdk/1.8/policies-pdk-create-schema-definition).

    Modify the `definition/gcl.yaml` file to define metadata and configuration parameters for your
    custom policy.

3.  [Configure custom policy features in Rust](https://docs.mulesoft.com/pdk/1.8/policies-pdk-configure-features).

    Use the rust code examples to implement your custom logic in the `src/lib.rs` file.

4.  [Compile your custom policy](https://docs.mulesoft.com/pdk/1.8/policies-pdk-compile-policies).

    Compiling your policy creates the `WebAssembly` binary file and configuration files necessary to
    upload your policy to Exchange and deploy it to an Omni Gateway.

5.  [Test and debug your policy](https://docs.mulesoft.com/pdk/1.8/policies-pdk-test-debug-overview).

    Use [pdk-unit](https://docs.mulesoft.com/pdk/1.8/policies-pdk-unit) for fast unit tests,
    [the PDK debugging playground](https://docs.mulesoft.com/pdk/1.8/policies-pdk-debug-local) for interactive checks with Omni
    Gateway in Local Mode in Docker, and [integration tests](https://docs.mulesoft.com/pdk/1.8/policies-pdk-integration-tests) to
    guard against regressions with your services and gateway configuration.

6.  [Publish your policy on Exchange](https://docs.mulesoft.com/pdk/1.8/policies-pdk-publish-policies-overview).

    Publish your policy on Exchange to distribute a development version of your policy for testing
    with your Omni Gateway configuration and to release production-ready policies. To deploy a
    policy to Omni Gateway, see step seven.

7.  Deploy your custom policy to a production environment by
    [applying it to an API instance](https://docs.mulesoft.com/pdk/1.8/policies-pdk-apply-policies) deployed on Omni Gateway.

8.  Configure a new version of this API instance by returning to step two.
