# Microsoft SQL Integration Guide

Cloud Voice can connect directly to a Microsoft SQL database so your phone system draws on the contact records you already maintain. Microsoft SQL is a relational database that stores structured data such as customer or contact tables. When a call comes in, Cloud Voice looks the number up in your database and shows the matching caller's name to the person answering. That display of a stored name in place of a bare phone number is called caller ID (Caller Identification) name display.

On top of caller name display, the integration can:

- Copy your Microsoft SQL contacts into Cloud Voice phonebooks (a process called contact synchronization), so users can place outbound calls to those contacts straight from the Cloud Voice App.
- Route incoming calls to specific destinations automatically, based on which synchronized phonebook the caller matches.

:::note
You do not have to enable everything. Caller ID name display works on its own. Contact synchronization and phonebook-based routing are optional add-ons that build on top of it. See [Choose your setup path](#choose-your-setup-path) below to pick the combination you need.
:::

## Requirements

Before you begin, confirm your environment meets the following.

| Component | Requirement |
| --- | --- |
| Cloud Voice | Enterprise Plan (EP) or Ultimate Plan (UP), running firmware version 84.16.0.70 or later. |
| Microsoft SQL | Any version of Microsoft SQL Server is supported; there are no version restrictions. |

:::caution
Both Cloud Voice requirements are hard prerequisites. The integration will not be available if the system is on a lower plan than Enterprise Plan (EP) or Ultimate Plan (UP), or on firmware older than 84.16.0.70. Check the current plan and firmware version before you start, and update the firmware first if needed.
:::

## Choose your setup path

The integration supports several capabilities, and the steps you follow depend on which ones you want to enable. Use the path that matches your goal.

:::tip
Each path below builds on the one before it, so complete the tasks in the order listed. Contact synchronization requires the base integration to be in place first, and phonebook-based routing requires synchronized contacts to match against.
:::

### Display caller names on inbound calls

Use this when you only want the person answering to see who is calling. To have Cloud Voice look up incoming numbers and show the caller's name, complete one task:

1. [Integrate Cloud Voice with Microsoft SQL](/pbx/integrations/microsoft-sql/integrate-cloud-voice-cloud-voice-with-microsoft-sql/).

### Display caller names and sync contacts

Use this when you also want your Microsoft SQL contacts copied into Cloud Voice phonebooks so users can call them directly from the Cloud Voice App. Complete two tasks in order:

1. [Integrate Cloud Voice with Microsoft SQL](/pbx/integrations/microsoft-sql/integrate-cloud-voice-cloud-voice-with-microsoft-sql/).
2. [Set up contact synchronization from Microsoft SQL](/pbx/integrations/microsoft-sql/set-up-contact-synchronization-from-microsoft-sql/).

### Display caller names, sync contacts, and route calls by phonebook

Use this when you want incoming calls sent to specific destinations automatically based on which synchronized phonebook the caller belongs to (for example, sending known customers to a dedicated queue). Complete all three tasks in order:

1. [Integrate Cloud Voice with Microsoft SQL](/pbx/integrations/microsoft-sql/integrate-cloud-voice-cloud-voice-with-microsoft-sql/).
2. [Set up contact synchronization from Microsoft SQL](/pbx/integrations/microsoft-sql/set-up-contact-synchronization-from-microsoft-sql/).
3. Configure inbound routes that match on synchronized phonebook contacts.

:::note
Inbound routing by phonebook match relies on the contacts brought in during step 2. If a caller is not in a synchronized phonebook, the call follows your normal inbound route instead.
:::
