> For the complete documentation index, see [llms.txt](https://www.neptune.tech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.neptune.tech/development-tools/development-tools.md).

# Overview

X++ building blocks that ship with Advanced Suite for your own Dynamics 365 Finance and Operations forms and processes.

Advanced Suite ships building blocks that partners and in-house developers can use in their own models: the same code that the Advanced Suite features are built on. They come with the Advanced Suite package; add a reference to the **AdvancedSuite** model in your model's descriptor and use the classes as they are, or extend them with Chain of Command.

| Tool                                                                               | What it gives you                                                                                                                                                                                                                                                                                  |
| ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Spreadsheet control](/development-tools/spreadsheet.md)                           | A spreadsheet editor inside a D365 form, with X++ support: create, open, change, calculate and save .xlsx workbooks on the server — in forms, batch jobs and services                                                                                                                              |
| [Paste from clipboard control](/development-tools/paste-from-clipboard-control.md) | A button, or Ctrl+V on your form, that hands the text on the user's clipboard to X++: rows from Excel, a list of item numbers, lines of an email — with helpers for lines and cells                                                                                                                |
| [Period date control](/development-tools/period-date-control.md)                   | A **...** button next to a From date / To date pair: the user picks a month, quarter, half-year, 9 months, year or one day in two clicks, and your form gets the dates in X++                                                                                                                      |
| [Scanning framework](/development-tools/scanning.md)                               | The engine behind the **Scanning** pane: barcodes typed, pasted, imported from a file or scanned with a serial port scanner or a phone go to one handler. Add [actions](/development-tools/scanning/actions.md) of your own and [contexts](/development-tools/scanning/contexts.md) for your forms |

{% hint style="info" %}
**License:** the Spreadsheet control, the Scanning framework (with the Scanning pane, your own actions and contexts, and the Serial port control), the Paste from clipboard control and the Period date control are free in the [Advanced Suite Developer edition](/resources/pricing.md#advanced-suite-developer-edition) — in every environment, production included, with standard support. Only **Real-time scanning** (a phone as the scanner) needs an add-on — see [Product barcode scanning](/advanced-suite/barcode-management/product-barcode-scanning.md).
{% endhint %}

## Before you start

* **Model reference** — in Visual Studio, *Dynamics 365 › Model Management › Update model parameters*, select your model and add **AdvancedSuite** to the referenced packages.
* **Naming** — the classes end with `_AdvancedSuite`. Give your own classes your own suffix, as in the examples (`MyScanningAction_OpenDocument`).
* **Extension points** — the classes that are meant to be extended say so in their documentation comments; methods marked `[Replaceable]` can replace the standard logic (Chain of Command without calling `next`).
