# Order form customization

> Admins can design the order form to accommodate departmental policies, users' technical proficiency, available capacity, and business rules

---

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

---

The order form is what a user completes when ordering a blueprint from the Catalog, or when selecting **New Server** to provision an ad hoc server. The form's content and the choices it offers are shaped by the [parameters](/docs/cmp/configure/order-forms-and-pricing/parameters/), options, and constraints that admins define for [groups, environments](/docs/cmp/use/blueprints/customize-order-form/group-and-environment-parameters/), and [blueprints](/docs/cmp/use/blueprints/customize-order-form/blueprint-level-parameters/). You can also replace a blueprint's order form with a [custom form](/docs/cmp/configure/order-forms-and-pricing/custom-forms/).

## Ways to customize the order form

| Task | Topic |
| --- | --- |
| Add a field for a group or environment | [Parameters](/docs/cmp/configure/order-forms-and-pricing/parameters/), [Group and environment parameters](/docs/cmp/use/blueprints/customize-order-form/group-and-environment-parameters/) |
| Add a field or set options for one blueprint | [Blueprint-level parameters](/docs/cmp/use/blueprints/customize-order-form/blueprint-level-parameters/) |
| Limit a field to a list of choices | [Static options](/docs/cmp/configure/order-forms-and-pricing/parameters/static-options/) |
| Generate a field's choices with a plugin | [Generated parameter options](/docs/cmp/configure/order-forms-and-pricing/parameters/generated-options/) |
| Set a minimum, maximum, or regular expression | [Constraints](/docs/cmp/configure/order-forms-and-pricing/parameters/parameter-options/) |
| Show or hide a field based on another field | [Dependencies](/docs/cmp/configure/order-forms-and-pricing/parameters/parameter-options/) |
| Change the order of fields | [Parameter display sequence](/docs/cmp/configure/order-forms-and-pricing/parameters/) |
| Name new servers | [Hostname specification](/docs/cmp/configure/order-forms-and-pricing/parameters/parameter-templates/hostname-specification/) |
| Set server annotations | [Annotations specification](/docs/cmp/configure/order-forms-and-pricing/parameters/parameter-templates/annotations-specification/) |
| Offer small, medium, and large sizes | [T-shirt sizing for VMs](/docs/cmp/use/blueprints/customize-order-form/order-form-customization/t-shirt-sizing-for-vms/) |
| Choose which networks each NIC can use | [Networking](/docs/cmp/use/blueprints/customize-order-form/order-form-customization/networking/) |
| Let users order for someone else | [Order on behalf of a recipient user](/docs/cmp/use/blueprints/customize-order-form/order-form-customization/order-on-behalf/) |
| Show what an order will cost | [Rates](/docs/cmp/configure/order-forms-and-pricing/rates/) |
| Check values against an external system | [Custom validation](#custom-validation) |
| Replace the order form with one you build | [Custom forms](/docs/cmp/configure/order-forms-and-pricing/custom-forms/) |

## How the order form is built

The choices available on the order form are determined by the selected group and target environment.

1. Select a group on the order form. This is always the first step, because the group determines which environments and options are available.
2. For each server added to the order, select the target environment if it isn't already preselected.

The form shows the parameters added to the group, the environment, and the blueprint. When a blueprint sets options for a parameter, the form offers only those options. Otherwise, it offers the options from both the group and the environment. For the full rules, including constraints and generated options, see [How option order is determined](/docs/cmp/configure/order-forms-and-pricing/parameters/parameter-options/).

<div class="alert alert-info" role="alert">


Newly created environments don't appear on the order form until they're associated with one or more groups. To automatically assign new environments to all groups, disable *Restrict New Environments* in [Miscellaneous settings](/docs/cmp/configure/administration/system/miscellaneous-settings/).
</div>


### Inherited parameters

Subgroups inherit their parent group's parameters, options, and constraints, so you can manage orders for many groups from one parent group. See [Subgroup inheritance of parameters](/docs/cmp/configure/order-forms-and-pricing/parameters/).

### Example

The example below shows the order form for a custom server in **Catalog** > **New Server**, with the parameters and options determined by the selected group and environment.

![Ordering a custom server from Catalog > New Server.](/img/cmp/use/blueprints/customize-order-form/order-form-customization/order-custom-server.png)

## Custom validation

For advanced order form validation, such as checking values against an external system, use the trigger points in **Admin** > **Orchestration Actions** > **Order Related**:

- **Blueprint Validation** runs for blueprint orders without server tiers.
- **Server Tier Validation** runs for blueprints that include server tiers.

Cloud Management Platform (CMP) ships with a sample plugin that documents the inputs and return values to implement. Custom forms use the same trigger points.

## Related

- [Order blueprints](/docs/cmp/use/blueprints/order/): What users see on the order form and how they submit an order.
- [Parameters](/docs/cmp/configure/order-forms-and-pricing/parameters/): Create parameters and manage inheritance and display order.
- [Parameter options](/docs/cmp/configure/order-forms-and-pricing/parameters/parameter-options/): How CMP decides which options a parameter offers.
- [Custom forms](/docs/cmp/configure/order-forms-and-pricing/custom-forms/): Replace a blueprint's order form with one you build.

---

Section pages:

- [Networking](/docs/cmp/use/blueprints/customize-order-form/order-form-customization/networking/): On the order form, users choose which network each NIC connects to and how its IP address is assigned
- [Order on behalf of a recipient user](/docs/cmp/use/blueprints/customize-order-form/order-form-customization/order-on-behalf/): Assign an order's servers and resources to a recipient other than the person placing the order
- [T-shirt sizing for VMs](/docs/cmp/use/blueprints/customize-order-form/order-form-customization/t-shirt-sizing-for-vms/): Provide friendly compute sizing options when ordering servers
