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

# 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.6/policies-pdk-prerequisites), you can develop custom policies by
using Flex 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.6/policies-pdk-apply-policies), which is the same for all Flex Gateway policies.

After you [create a new project](https://docs.mulesoft.com/pdk/1.6/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.6/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.6/policies-pdk-create-project).

2.  [Define a schema definition](https://docs.mulesoft.com/pdk/1.6/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.6/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.6/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 a Flex Gateway.

5.  [Debug Your Policy with the PDK Debugging Playground](https://docs.mulesoft.com/pdk/1.6/policies-pdk-debug-local).

    Use the playground provided with PDK to debug the functionality of your custom policy locally.

6.  [Write Integration Tests](https://docs.mulesoft.com/pdk/1.6/policies-pdk-integration-tests).

    Write intergration tests to ensure your custom policy is compatible with your other services and
    to ensure that each new policy version does not introduce regression errors.

7.  [Publish your policy on Exchange](https://docs.mulesoft.com/pdk/1.6/policies-pdk-publish-policies#publish).

    Publish your policy on Exchange to distribute a beta version of your policy for testing with
    your Flex Gateway configuration. To deploy a policy to Flex Gateway, see step 9.

8.  [Release your policy on Exchange](https://docs.mulesoft.com/pdk/1.6/policies-pdk-publish-policies#release).

    Release your policy on Exchange to distribute a production-ready policy.

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

10. Configure a new version of this API instance by returning to step 2.
