# Developer guide

> Extend Cloud Management Platform (CMP) with your own code when configuration alone cannot meet a requirement

---

Site [llms.txt](/llms.txt)

---

This section is for extending CMP: exploring the data model, writing plugins, and building blueprints for services CMP does not support by default.

## Try configuration before code

Most requirements can be met without writing Python. The options below are ordered from least to most maintenance.

1. **[Parameters](/docs/cmp/configure/order-forms-and-pricing/parameters/), [preconfigurations](/docs/cmp/use/servers/preconfigurations/), [groups](/docs/cmp/configure/access-and-security/groups-roles-permissions/#groups), and [environments](/docs/cmp/configure/infrastructure/environments/).** CMP's own framework for constraining what users can order and where it lands.
1. **[Content Library](/docs/cmp/use/catalog/content-library/) content.** Blueprints, actions, rules, and recurring jobs written and maintained by CloudBolt.
1. **Infrastructure as code.** Deploy an existing [Terraform module](/docs/cmp/use/orchestration/terraform/) or Azure Resource Manager template as a blueprint item.
1. **[Remote scripts](/docs/cmp/use/orchestration/remote-scripts/).** Run a script on the deployed server in Bash, Python, or PowerShell.
1. **[CloudBolt plugins](/docs/cmp/use/orchestration/plugins/).** Your own Python, running at a point in the order or job lifecycle. Factor anything reused into [shared modules](/docs/cmp/developer-resources/guide/shared-modules/).
1. **[UI extensions](/docs/cmp/developer-resources/ui-extensions/).** New screens, tabs, and workflows in the interface.

## Before you build

Check first whether a built-in extension point already covers your case: an action, an orchestration hook, a blueprint, or a rule. Code written against those keeps working across upgrades, while code that goes beyond them may need rework.

For anything substantial, talk to [CloudBolt Support](/docs/cmp/support/) first. They will review the plan, suggest alternatives, and point out where the product already does what you need.

---

Section pages:

- [Shared management](/docs/cmp/developer-resources/guide/shared-management/): A service can be managed entirely through Cloud Management Platform (CMP), or by CMP and your operations teams together
- [Extensibility](/docs/cmp/developer-resources/guide/extensibility/): The ways to extend Cloud Management Platform (CMP), from importing ready-made content to writing your own
- [Shell Plus](/docs/cmp/developer-resources/guide/shell-plus/): Shell Plus is an interactive Python shell on the Cloud Management Platform (CMP) appliance, with every model already imported
- [Models](/docs/cmp/developer-resources/guide/models/): Everything Cloud Management Platform (CMP) manages is a Django model, accessed through the same ORM CMP uses
- [Develop blueprints](/docs/cmp/developer-resources/guide/blueprints/): A blueprint defines a service users can order and what Cloud Management Platform (CMP) does at each stage of that service's life
- [Shared modules](/docs/cmp/developer-resources/guide/shared-modules/): Write Python once and import it into any Cloud Management Platform (CMP) plugin
