# Auto Provision Mitel Expansion Module with Cloud Voice

A Mitel expansion module adds a bank of extra programmable keys to a Mitel desk phone. Once the phone is provisioned by Cloud Voice, you can assign function keys to that module and have them applied automatically, either by picking key types in the management portal or by defining the keys in a custom provisioning template.

## Supported models and templates

Check that your expansion module, phone model, and provisioning template line up before you begin. Each module pairs with a specific set of phones and requires a minimum template version.

| Expansion module | Compatible phone models | Provisioning template |
|------------------|-------------------------|-----------------------|
| M685 | 6865i, 6867i, 6869i, 6873i | YSDP_Mitel68XX (`1.0.5` or later) |
| M695 | 6920, 6930, 6940 | YSDP_Mitel69XX (`1.0.5` or later) |

## Before you begin

- Connect the Mitel expansion module to a compatible Mitel desk phone.
- Provision the phone with Cloud Voice through auto provisioning first. See [Auto Provision a Mitel IP Phone](/pbx/ip-phone-configuration-guide/provision-mitel-ip-phone-with-cloud-voice-cloud/).

## Choosing a method

You can assign the module's function keys in two ways:

- **From the management portal**: select each key type from a menu and configure it individually. Best when you only need to set a handful of keys.
- **From a custom provisioning template**: define the keys as configuration parameters in a template file and apply them in bulk. Best when you are comfortable with the phone's raw parameters and want to repeat the setup across devices.

Both methods rely on the same underlying rule: keys that go beyond the phone's own programmable buttons spill over onto the connected module.

:::note
Function keys that exceed the number of programmable keys built into the phone are applied to the expansion module instead. For example, a Mitel 6869i has 44 programmable keys, so any function key from the 45th onward takes effect on the module.
:::

## Method 1: Assign keys from the management portal

Here you build the key list by choosing a type for each key and setting its behavior directly in the portal.

:::note
Cloud Voice supports up to **120** function keys per extension when configured through the management portal.
:::

1. Add and configure the function keys.

   1. Sign in to the management portal and go to **Extension and Trunk > Extension**, then edit the extension tied to the phone.
   2. Open the **Function Keys** tab.
   3. Click **Add** to create each function key for the module.

      
      ![Cloud Voice, function key list with type, value, and label fields for a Mitel expansion module](/images/pbx/set-up-function-keys-for-mitel-expansion-module.png)

      - **Type**: Choose the kind of key you want.
      - **Value**: Enter the value that matches the key type.
      - **Label**: Optional. Add text to show on the phone's display.

      :::tip
      Give every key a short, clear **Label**. The label is what the user reads next to the button on the phone or module, so a name like "Sales" or "Front Desk" is far easier to use than an unlabeled key.
      :::

   4. Click **Save**.

2. Reprovision the phone so the new keys take effect.

   :::note
   Reprovisioning tells the phone to pull its updated configuration from Cloud Voice and reload it. Your new function keys will not appear on the module until you reprovision. Because the phone reloads its settings, run this when the extension is not on an active call.
   :::

   1. Go to **Auto Provisioning > Phones**.
   2. Click the reprovision icon ![reprovision icon](/images/pbx/reprovision.png) next to the phone.
   3. In the confirmation window, click **OK**.

## Method 2: Assign keys from a custom template

If you know the phone's configuration parameters, you can define the module's function keys in a template. The settings are pushed to both the phone and the module at once, which saves time when repeating the same layout.

:::caution
A custom template inherits from the default template for the phone model, so update that default template to the [required version](#supported-models-and-templates) first. You will find it under **Auto Provisioning > Resource Repository > Default Templates**.
:::

1. Create the custom provisioning template.

   1. Go to **Auto Provisioning > Resource Repository > Custom Templates**.
   2. Click **Add**.
   3. In the **Basic** section, fill in the core details:

      - **Template Name**: Give the template a recognizable name.
      - **Source Default Template**: Search for and select the default template for your phone model. This example uses **YSDP_Mitel68XX**.
      - **Template Type**: Select **Advanced**.
      - **Remark**: Optional. Add a note describing the template.

   4. Optional: Adjust the **Preference**, **Codecs**, and **LDAP Directory** sections as needed. (LDAP, the Lightweight Directory Access Protocol, is a shared network directory the phone can search for names and numbers.)
   5. In the second text box of the **Customize Configuration Parameters in Text** section, select the phone model, then add the function-key parameters for the module by following that model's configuration parameter reference.

      ![Custom template editor showing function key parameters entered for a Mitel expansion module](/images/pbx/autop-mitel-expansion-module-functionkey.png)

2. Apply the template to the phone.

   1. Go to **Auto Provisioning > Phones** and edit the phone.
   2. In the **Options** section, choose your template from the **Template** drop-down list.
   3. Click **Save**.

3. Reprovision the phone so the template takes effect.

   1. Go to **Auto Provisioning > Phones**.
   2. Click the reprovision icon ![reprovision icon](/images/pbx/reprovision.png) next to the phone.
   3. In the confirmation window, click **OK**.
