# General rules and techniques

## General rules

To allow NDAT work correctly several rules must be followed:

* Sample .vsdx from NDAT archive must be used as template for project. It has some special fields in its ShapeSheet.
* NDAT shapes must be connected to each other via connection points or NDAT shapes must be put into NDAT container-shapes.&#x20;
* Some controls must be glued too (see samples).&#x20;
* All object properties must be set in Shape Data (not in shape text), except callouts and profiles.&#x20;
* All features are accessible via NDAT ribbon tab or in shapes context menus – Visio event listeners are almost not used.

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FVmfEdFaaTCc1gGWPJWri%2FRibbon%20v001.png?alt=media&#x26;token=0428cbe1-8584-4492-b58b-7b13fd435bd0" alt=""><figcaption><p>NDAT ribbon tab</p></figcaption></figure>

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FIvh2xjluevP06exFXcyy%2FContext%20menu%20v001.png?alt=media&#x26;token=e0043cdb-d7a1-4fa8-8ce3-fc038e2a969f" alt=""><figcaption><p>Sample shape context menu</p></figcaption></figure>

* Generally, unique ID of device or VM/Context – it is its Hostname. It must be the same across pages to allow NDAT to relate shapes to each other.
* Be careful with some characters:&#x20;
  * <mark style="background-color:red;">\~ ‘ “</mark> must not be used inside Shape Data;&#x20;
  * <mark style="background-color:green;">$, #</mark> can and even must be used, but only in some special cases (see below).&#x20;
* Do no use words «None (not used)», «None» inside Shape Data.&#x20;
* Follow the rules of callout text formatting. Separate lines with ";" and new line symbol, use ":" between names and values.
* If unsure, do not edit NDAT shapes Shape Sheet (and absolutely never edit formulas inside GUARD() function).&#x20;

It is allowed to draw any arbitrary non NDAT shapes on any pages – they will not affect NDAT.

## Data storage and couple of technical details

NDAT project is an ordinary .vsdx file. All data is stored in Shape Sheet of shapes or in document Shape Sheet (except external data).&#x20;

File is autonomous, is of standard vsdx format, can be sent to other Visio users, not requires NDAT to be installed, has no macros inside.&#x20;

Reports are formed by analyzing shape data and shape connections to each other.&#x20;

NDAT – is a Visio C# VSTO Add-in.

## Typical usage scenario

Typical NDAT usage scenario includes following stages:

1. Determine list of physical devices, choose hostnames/descriptions, and place them in racks;&#x20;
2. Prepare DC/Building cabling table and import it as external data (optional step);&#x20;
3. Generate L2 node shapes from L1 device shapes;&#x20;
4. Develop basic L2 diagrams, leave VLAN ID, \[M]LAG ID undefined;&#x20;
5. Develop IP plan which contains VLAN IDs, subnets, loopbacks and router-ids – no need to address every single L3 interface;&#x20;
6. Develop basic L3 topology diagram;&#x20;
7. Add VLAN ID, \[M]LAG ID, profiles and callouts to L2 diagrams;&#x20;
8. Add static routes, BGP sessions, profiles and callouts to L3 diagrams;&#x20;
9. Export data to table views using different reports or crossing tasks.

## General tools and techniques

NDAT provides a number of useful tools that are not related to objects of distinct class or to particular network layer.

**Glued controls marking** (see NDAT -> General -> Mark controls) – up to Visio 2016, glued controls were marked with red by Visio itself. Starting from 2019 Visio leaves glued controls unmarked (leaves them yellow). So NDAT contains special tool to mark glued (connected) controls.

<div><figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2Fyh9PCwI37Rim0kSMFfAJ%2FUnmarked%20controls%20v001.png?alt=media&#x26;token=164e509b-bf36-481c-8d60-6a3e0de827c0" alt=""><figcaption><p>Unmarked connected controls</p></figcaption></figure> <figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FLSiB4P6eCH1RcdX0iVHT%2FMarked%20controls%20v001.png?alt=media&#x26;token=148127da-994f-4196-ad50-9fad11c1583d" alt=""><figcaption><p>Marked connected controls</p></figcaption></figure></div>

**Shape Edit form** – form can be found in context menu of most of the NDAT shapes – allows to edit Shape Data and connected callout in more useful way (e.g. allows to edit multi-line values in Shape data).

In case shape has a property with fixed list of values, in Edit form these values are accessible via line's right-click menu.

<div><figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FJRZPWCOfkxBtnSftxszR%2FEdit%20button%20location%20v002.png?alt=media&#x26;token=19f7242d-fc9a-4a6e-a4c8-c8b60c54432e" alt=""><figcaption><p>Edit button location</p></figcaption></figure> <figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FMzeDT2XVPzNT7QypoUtK%2FEdit%20form%20v001.png?alt=media&#x26;token=227da0ca-ef80-4da5-b51b-5f39fad6403c" alt=""><figcaption><p>Edit form</p></figcaption></figure> <figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2F8pbz1gHVcHEjD8sVryUU%2FEdit%20form%20fixed%20values%20v001.png?alt=media&#x26;token=e0015bfb-2e28-4f37-a049-917acda70367" alt=""><figcaption><p>Edit form. Fixed list vlaues</p></figcaption></figure></div>

**Multiple find and replace** (see NDAT-> General -> Replace) which can search and replace in Shape Data . Allows to replace multiple values at a time.

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2F7TzmBYPUIcklbNuPoCyY%2FReplace%20v001.png?alt=media&#x26;token=5c94f7c0-e1e4-4966-9569-bf494b0b36a9" alt=""><figcaption><p>NDAT replace window</p></figcaption></figure>

On "Run replace" button click, NDAT will loop over replace table line by line. Each line will be applied to all shapes in current selection or to all shapes in document if nothing is selected.&#x20;

By default NDAT looks for "Replace what" values in selected shape data. But if "Replace in shape text" box checked, then it will search in shape's text.

By default NDAT treats "Replace what" values as text. But if "Use as Regex" box checked, then it will treat it as C# regex (see reference here [https://learn.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference](https://learn.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference)).&#x20;

Replace table supports copy and paste from Excel.

**Multiple find and replace tool must be used with cautiuon. It is strongly recommended to backup Visio file before starting batch replace. Undo action (Ctrl+Z) will not be available.**&#x20;

**Clear controls** – moves shapes controls to default position. Can be called from ribbon, from shapes context menus.

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FUmc64qi7zxXzGDEhi23n%2FClear%20controls%20in%20context%20menu%20locaton%20v001.png?alt=media&#x26;token=92ab8b6a-2f64-462e-b025-1f1e53d4f15f" alt=""><figcaption><p>Clear controls contex menu action</p></figcaption></figure>

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2Fv2OGJLIVi3YnD7bJfANs%2FClear%20controls%20in%20ribbon%20locaton%20v001.png?alt=media&#x26;token=bafea515-9cb3-4de0-8f8b-c39d00ca469a" alt=""><figcaption><p>Clear controls ribbon action</p></figcaption></figure>

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FTuQn9U3roRU5eNmDTgSU%2FClear%20controls%20controls%20uncleared%20v001.png?alt=media&#x26;token=010a70b5-9d1f-430e-9451-125019d559f4" alt=""><figcaption><p>Shape with uncleared controls</p></figcaption></figure>

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FR8GOqfslqG6aSBSdr24h%2FClear%20controls%20controls%20cleared%20v001.png?alt=media&#x26;token=fa8cb8a0-e131-42a1-a929-108617ab0e33" alt=""><figcaption><p>Shape with cleared controls</p></figcaption></figure>

**Controls auto clearing checkbox** – enables/disables automatic controls clearing on shape copy and paste.&#x20;

By default NDAT automatically triggers controls clearing on shape copy and paste.

Sometimes if you need to copy and paste group of interconnected shapes with some controls glued to each other - it is useful to keep these controls connected. So, in that case controls auto clearing should be disabled.

E.g. it's recommended to disable **Controls auto clearing** on copying of a couple port and glued vlanlist shapes.

**Workbook generaton** - tool that generates several reports in a single click and in a single Excel file:

* See General -> General Reports -> Generate Workbok;
* See settings to define which of reports should be included in workbook:&#x20;
  * Include racks report in workbook;&#x20;
  * Include devices report in workbook;&#x20;
  * Include L1 links report in workbook;&#x20;
  * Include L2 nodes report in workbook;&#x20;
  * Include L2 links report in workbook;&#x20;
  * Include IP addressing report in workbook;&#x20;
  * Include BGP sessions report in workbook;&#x20;
  * Include static routes report in workbook;&#x20;
  * Include VRF report report in workbook;&#x20;
  * Include IM for all pages in workbook.

## Profiles and callouts

Profiles and callouts are intended to allow user to link NDAT object to an arbitrary sets of data in “property name : property value” format (that is - to extend NDAT data model).

### Callouts

Let's say we want to define device's hardware properties: number of CPU cores and RAM volume. Using callouts this task can be solved in this way: take callout shape, fill it with data (strictly follow "name: value;" format), and glue it to device.&#x20;

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FBTN0NVzAi0wCmSNCi6hV%2FCallout%20hw%20sample%20v001.png?alt=media&#x26;token=50699c81-8a70-494a-abad-6b22e4a66e32" alt=""><figcaption><p>Simple callout example</p></figcaption></figure>

After that it's possible to generate profiled devices report where NDAT will collect callout contents.

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FgFhxqoNd30LO3QQDOkva%2FCallout%20hw%20sample%20profiled%20report%20v001.png?alt=media&#x26;token=ab2c9dea-7e5a-43bd-bd87-919a15dea20e" alt=""><figcaption><p>Generate profiled devices report action</p></figcaption></figure>

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FX4r3mvqA6YV754M2uQId%2FCallout%20hw%20sample%20profiled%20report%20generated%20v001.png?alt=media&#x26;token=d99a056d-f588-409d-b937-31bf73227706" alt=""><figcaption><p>Profiled devices report sample</p></figcaption></figure>

Callout is text shape with several visible connectors. Callout text not set in callout's shape data - it is a simple text. To allow NDAT parse callout text correctly user must format it like on a picture below.

There are several types of Callouts – they differ by number of controls and exterior – functionally they are the same. On stencils page callouts named “generaladdinfo”.

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FVjYX8WhCO8tVAQ7IS7fP%2FCallouts.png?alt=media&#x26;token=9dd21220-56fe-43b2-b41e-15818d916b85" alt=""><figcaption><p>Callouts</p></figcaption></figure>

Single callout with multiple controls can be glued to multiple objects.

NDAT provides two ways to edit callout text. First one is to use Visio itself (simply edit shape's text). Second way is to trigger shape's or callout's edit action (see in context menu).

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FbOja1Nw9bsRTVzijgV0d%2FCallout%20edit%20form%20v001.png?alt=media&#x26;token=509bebaa-8fda-4d3c-8251-d7d95a896826" alt=""><figcaption><p>Editing callout by means of edit form</p></figcaption></figure>

Edit form parses callout text to table and, vise versa, constructs correctly formatted callout text from table data when OK button pressed. It allows to add/delete rows to table (that is to add/delete name-value pairs to callout text).

Now let's take a look at profiles.

### Profiles

Profile is a table shape in Visio. It can be edited by means of pure Visio or using special edit form (see "Edit" action in profile's context menu). Profile edit form supports pasting from Excel. NDAT processes profile shapes that placed on special "Profiles" page.

<div><figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FG8kZd1KzCP3oMLSXC6no%2FProfiles%20shape%20v001.png?alt=media&#x26;token=73ee3cd7-a65e-43c9-8d56-273b8a3c5c47" alt=""><figcaption><p>Profile shape</p></figcaption></figure> <figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2F1VynMy4WTPqxhuoSGFPe%2FProfile%20edit%20form%20v001.png?alt=media&#x26;token=22087782-f542-4a70-a8c2-5ef668757064" alt=""><figcaption><p>Profile edit form</p></figcaption></figure></div>

To define devices CPU and RAM using profiles do the following. Put a profile on profiles page and edit it:&#x20;

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FvgjcAHD4rvrGqzWPTIM1%2FProfiles%20hw%20sample%20v001.png?alt=media&#x26;token=b60ee59d-063e-4337-bb81-dc186dc2e0d7" alt=""><figcaption><p>Profile sample</p></figcaption></figure>

After that go to Racks page, select one or more devices in rack and call Profiles action from ribbon (General -> Profiles).

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2F0kt5JtcfkbTkWmQgarqm%2FProfiles%20hw%20sample%20attach%20form%20shown%20v001.png?alt=media&#x26;token=fad8cd8e-f4ff-4538-8a80-aeb67bcb8446" alt=""><figcaption><p>Profile attachment form shown</p></figcaption></figure>

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FNu2VjnC5uff6bWudumcy%2FProfiles%20action%20v001.png?alt=media&#x26;token=9f4cbc2e-bd83-4636-9a27-8097080ee369" alt=""><figcaption><p>Profiles action</p></figcaption></figure>

To attach profile to devices do the following: select available profile, click add button, and then click OK.

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2Fa3ZdhyDnj5fbCCmDglQe%2FProfiles%20hw%20sample%20attach%20form%20pattached%20v001.png?alt=media&#x26;token=5f03d39e-348e-4b6e-bbe3-340c84311824" alt=""><figcaption><p>Profile attachment</p></figcaption></figure>

Now it's possible to generate a devices profiled report that will contain data from profile. See that in contrast to callout, profile data now linked to both devices.

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FCtbJ7DLbCBRgfcbRi5og%2FProfiles%20hw%20sample%20report%20generated%20v001.png?alt=media&#x26;token=d66260c7-cbcc-40ae-bd5d-a414a63e9578" alt=""><figcaption><p>Devices profiled report sample</p></figcaption></figure>

#### Profiles attachment

Profiles are always attached to and detached from shapes in active selection. Profile attachment form looks for available profiles only on special “Profiles” page.

In the right list of attachment form profile names are colored:

* black – profile is linked to all shapes in selection;&#x20;
* grey - profile is linked to some of the shapes in selection;&#x20;
* red – profile will be unlinked from all of the shape in selection after OK button will be pressed;&#x20;
* green - profile will be linked to all of the shape in selection after OK button will be pressed.

To illustrate profile names coloring, imagine following situation. We have three profiles (Profile1, Profile2 and Profile3), and two devices (Hostname-1 and Hostname-2). Profile1 attached to both devices and Profile2 attached only to Hostname2. In this situation call the attachment form and see that Profile1 is black (means it attached to all devices in selection), and Profile2 is grey (means it attached to some of the shapes in selection).

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FvMY7lt1eeswNj6IG7VKY%2FProfiles%20grey%20v001.png?alt=media&#x26;token=3e940901-b846-46dc-9af8-20fad01998ad" alt=""><figcaption><p>Profile marked with grey</p></figcaption></figure>

Now try to attach Profile3 to all devices in selection (that is select it in the left list and click Add).

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FoylHYgU2cq9jfylBS7i7%2FProfiles%20green%20v001.png?alt=media&#x26;token=af7221e5-6e1b-485f-b9ff-21d64c405749" alt=""><figcaption><p>Profile marked with green</p></figcaption></figure>

Green means that profile will be attached to shapes after OK button will be clicked. If user clicks Cancel button NDAT will discard changes (that is will not attach/detach anything).

And finally, lets say we attached Profile3 and now want to detach it. To do it - call attachment form, select Profile3 in the right list and click Delete.

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FtTCZT8eebFhGQg3Npyz5%2FProfiles%20red%20v001.png?alt=media&#x26;token=f7c78afa-e30a-4c2b-b027-0ef33ac76799" alt=""><figcaption><p>Profile marked with red</p></figcaption></figure>

Red means that profile will be detached from shapes after OK button will be clicked.

Profile attachment form checks which profiles are already attached to shapes. If it finds attached profile that is not present on "Profiles" page then it will mark it with red (prepare to auto detach). Let say we deleted already attached Profile1, then attchment form will show us that it's unavailable and must be detached:

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FRwoSS7eDMVbPOP3kqHHM%2FProfiles%20auto%20red%20v001.png?alt=media&#x26;token=041bf798-87ac-4a5d-b693-f36aef38c0c2" alt=""><figcaption><p>Unavailable profile marked with red</p></figcaption></figure>

#### Profile reports label and complex multi-line profiles

Sometimes there is a neccessity to attach complex profile, that describes several objects. Good examples are \[list of] server disk partitions, or \[list of] L4 services that run on host or single IP interface.

In these cases profile should have several lines.

Imagine we've used profile to define node's partions table.

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FLQuHcGQ64ltahANnIkia%2FProfile%20reports%20label-1%20v002.png?alt=media&#x26;token=820be780-8488-43c0-86b8-d571dc11af08" alt=""><figcaption><p>Nodes partition table defined in profile</p></figcaption></figure>

Each profile shape has two fields:

* Use reports label - "Yes/No" field;
* Reports label - text field where label can be defined; visible only if "Use reports label" set to "Yes".

Now let's attach created partitions profile to some server's L2 node (L2 node was chosen to show that profiles can be attached to different NDAT objects - not only devices).

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FnQwZNUOtX0roII9t4fLn%2FProfile%20reports%20label-2%20v001.png?alt=media&#x26;token=5a6f6559-669f-4e4a-acb2-bbc5b14068af" alt=""><figcaption><p>Attaching profile to L2 node</p></figcaption></figure>

Now generate L2 nodes profiled report.

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FQZSVVVGy7o43IKkNSUkB%2FProfile%20reports%20label-3%20v001.png?alt=media&#x26;token=b60a0fd5-54c1-4f9d-9b86-293227b0bc8a" alt=""><figcaption><p>Profiled L2 nodes report action</p></figcaption></figure>

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FK1syAYcpMKj6a4ikrSbA%2FProfile%20reports%20label-4%20v001.png?alt=media&#x26;token=98217ef5-795d-4225-a2fe-e0bb59f06513" alt=""><figcaption><p>Profiled L2 nodes report with labeled profile entries</p></figcaption></figure>

See that NDAT put a label in front of each profile entry.

Now edit profile and set "Use reports label" to "No". And then regenerate L2 nodes profiled report.

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FphCYAmLuNH9b8IbLJ7oy%2FProfile%20reports%20label-5%20v001.png?alt=media&#x26;token=1eb6d3de-4e84-474c-82c7-10618d0e3b0c" alt=""><figcaption><p>"Use reports label" set to "No".</p></figcaption></figure>

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FQYUf3se5uY6orT4vt2YL%2FProfile%20reports%20label-6%20v001.png?alt=media&#x26;token=3a2e795c-218a-46d9-b3ad-cfe092066d1a" alt=""><figcaption><p>Profiled report without labels</p></figcaption></figure>

See that NDAT removed profile entries labels.

General recommendation is to use labels with multiline complex profiles. And to disable them when using simple single line profiles.

### Callouts vs profiles

Difference between callouts and profiles:

* Callouts are visible, they take some place on page, callout can be linked only to shapes on same page;
* Callouts can not be used as multi-line profiles (that is to describe lists of objects);&#x20;
* Profiles are all placed on special page, so they are not visible on diagrams, and they, by means of a special tool, can be attached to NDAT shapes on any other pages.

### Applicability

Profiles and callouts can be attached (glued) to:

* VRF and DeviceVRF (l3vrf, l3devicevrf);&#x20;
* L3 interfaces (l3port);&#x20;
* Loopbacks (l3loopback);&#x20;
* Shared IPs (l3sharedip);&#x20;
* L2 nodes (l2devicenode, l2clusternode, l2contextnode, l2bladenode, l2bladeclusternode, l2virtualnode, l2vsnode, l2vdsnode);&#x20;
* L2 port/portsets (port, portset);&#x20;
* L1 nodes (l1device, l1clusternode, l1blade, l1bladeclusternode);&#x20;
* Racks (rack);&#x20;
* And also, profiles can be attached to static routes (l3staticroute);
* And also, callouts can be attached to BGP sessions (l3bgpsession, l3bgphalfsession).

Reports with these objects can be generated in two forms – simple and profiled. The latter one contains all the data from callouts and profiles.

## Report line grouping

Lines of most of the reports can optionally be grouped by one of the report field. See grouped and ungrouped report samples on pictures below.

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2F4PmlhWEQfGOP4devhqMB%2FReport%20grouping%20ungrouped%20sample%20v001.png?alt=media&#x26;token=5515d781-60d4-4ab8-b351-18ce45662a8a" alt=""><figcaption><p>Report without line grouping</p></figcaption></figure>

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FI3cYLy5N69mWHDfjRTsT%2FReport%20grouping%20grouped%20sample%20v001.png?alt=media&#x26;token=71e3603b-eb48-47c1-9e7a-071e5bf225e4" alt=""><figcaption><p>Report with line grouping</p></figcaption></figure>

Line grouping can be set up in settings:

<figure><img src="https://2027773490-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXZ0vQTQj2fj07FjsdK1M%2Fuploads%2FkgFzs5mocjIe0TnHCicy%2FReport%20grouping%20settings%20v001.png?alt=media&#x26;token=db0d7fce-f63d-48f7-be7a-18d0b1f4b943" alt=""><figcaption><p>Line grouping options</p></figcaption></figure>

## Auto glue and link geometry fixing

TODO

## Shape copier tool

TODO
