# MSPP Documentation

Instructions on using my NinjaOne automated documentation scripts

Welcome, This site contains the instructions on how to use my automated documentation scripts.

For support please log an issue on my GitHub page, or visit the NinjaOne Discord.

To get started with my NinjaOne scripts please visit:

[Getting Started](/ninjaone-auto-documentation/getting-started)


# NinjaOne - Billing Scripts

This section provides scripts to help with automated billing using NinjaOne's PSA suite.


# Pax8 to NinjaOne License Sync

Synchronises Pax8 subscriptions into NinjaOne Software License Management

This script allows you to bring your Pax8 subscription information into NinjaOne license management. With the release of NinjaOne 13.0 this license information can be used by NinjaOne Billing as a quantity source to automatically invoice customers.

<figure><img src="/files/aCIY9Gv4XL9ZkHJ4nWHc" alt=""><figcaption></figcaption></figure>

## **Requirements**

Make sure the [Getting Started](/ninjaone-auto-documentation/getting-started) guide has been followed

### **NinjaOne Products**

Core RMM

NinjaOne IT Asset Management (included in NinjaOne PSA)

### **Recommended Schedule**

Once per day

### **Role Setting Custom Fields**

<table data-full-width="true"><thead><tr><th>Display Name</th><th width="254.8">Name</th><th>Type</th><th>Permissions</th><th>Description</th></tr></thead><tbody><tr><td>Pax8 Client ID</td><td>pax8ClientID</td><td>Secure</td><td><p>Technician: Editable<br>Automations: Read/Write</p><p>API: None</p></td><td>Your Pax8 API Client ID</td></tr><tr><td>Pax8 Client Secret</td><td>pax8ClientSecret</td><td>Secure</td><td><p>Technician: Editable<br>Automations: Read/Write</p><p>API: None</p></td><td>Your Pax8 API Client Secret</td></tr></tbody></table>

### **Global Custom Fields**

None

## Setup

To run this script first obtain a Pax8 API Client ID and Secret from <https://app.pax8.com/integrations/credentials>

Add in the Client ID and Client Secret that will be generated to the custom fields on your automation device.

Follow the details in the getting started guide for instructions on how to schedule this script.

There is a setting at the top of the script to let you choose to include the organization name in the license name or not.

## Matching

Organizations are matched based on the company name in Pax8 to the Organization name in NinjaOne. If your names do not match you can edit the name override section at the top of the script to map the Pax8 names to NinjaOne names.

## The Script

{% @github-files/github-code-block url="<https://github.com/lwhitelock/NinjaOneAutomation/blob/main/Billing_Scripts/Pax8_NinjaOne_Sync.ps1>" %}


# TD Synnex to NinjaOne License Sync

Synchronises TD Synnex subscriptions into NinjaOne Software License Management

This script allows you to bring your TD Synnex subscription information into NinjaOne license management. With the release of NinjaOne 13.0 this license information can be used by NinjaOne Billing as a quantity source to automatically invoice customers.

<figure><img src="/files/6D3O5I9JYXMvOjKK5AFX" alt=""><figcaption></figcaption></figure>

## **Requirements**

Make sure the [Getting Started](/ninjaone-auto-documentation/getting-started) guide has been followed

### **NinjaOne Products**

Core RMM

NinjaOne IT Asset Management (included in NinjaOne PSA)

### **Recommended Schedule**

Once per day

### **Role Setting Custom Fields**

<table data-full-width="true"><thead><tr><th>Display Name</th><th width="254.8">Name</th><th>Type</th><th>Permissions</th><th>Description</th></tr></thead><tbody><tr><td>TD Synnax Account ID</td><td>tdSynnaxAccountId</td><td>Secure</td><td><p>Technician: Editable<br>Automations: Read/Write</p><p>API: None</p></td><td>Your TD Synnax Account ID</td></tr><tr><td>TS Synnax Refresh Token</td><td>tdSynnaxRefreshToken</td><td>Secure</td><td><p>Technician: Editable<br>Automations: Read/Write</p><p>API: None</p></td><td>Your TD Synnax Refresh Token</td></tr></tbody></table>

### **Global Custom Fields**

None

## Setup

First login to TD Synnax StreamOne Ion. Go to your Account Information page and note your AccountID <https://ion.tdsynnex.com/v2/accounts/info>

Next create a new API User and give it Read Only Permissions. Save the user and then double click the user to Edit the user. On the edit page generate OAUTH Credentials and copy the refresh token. This refresh token can only be used once. The script wiill update the secure field with the new one after each use. But if someone goes wrong you may need to fetch a new token from here and manually update it in the future.

Set the obtained values into the TD Synnex custom fields you created on your automation machine.

Follow the details in the getting started guide for instructions on how to schedule this script.

There is a setting at the top of the script to let you choose to include the organization name in the license name or not.

## Matching

Organizations are matched based on the company name in TD Synnax to the Organization name in NinjaOne. If your names do not match you can edit the name override section at the top of the script to map the TD Synnax names to NinjaOne names.

## The Script

{% @github-files/github-code-block url="<https://github.com/lwhitelock/NinjaOneAutomation/blob/main/Billing_Scripts/TDSynnex_NinjaOne_Sync.ps1>" %}


# ALSO to NinjaOne License Sync

Synchronises ALSO subscriptions into NinjaOne Software License Management

This script allows you to bring your ALSO subscription information into NinjaOne license management. With the release of NinjaOne 13.0 this license information can be used by NinjaOne Billing as a quantity source to automatically invoice customers.

<figure><img src="/files/dWk6DThViN3tvS3URrlz" alt=""><figcaption></figcaption></figure>

## **Requirements**

Make sure the [Getting Started](/ninjaone-auto-documentation/getting-started) guide has been followed

### **NinjaOne Products**

Core RMM

NinjaOne IT Asset Management (included in NinjaOne PSA)

### **Recommended Schedule**

Once per day

### **Role Setting Custom Fields**

<table data-full-width="true"><thead><tr><th>Display Name</th><th width="254.8">Name</th><th>Type</th><th>Permissions</th><th>Description</th></tr></thead><tbody><tr><td>ALSO Instance</td><td>alsoInstance</td><td>Text</td><td><p>Technician: Editable<br>Automations: Read/Write</p><p>API: None</p></td><td>Your ALSO primary domain for example: marketplace.also.co.uk</td></tr><tr><td>ALSO Account ID</td><td>alsoAccountId</td><td>Secure</td><td><p>Technician: Editable<br>Automations: Read/Write</p><p>API: None</p></td><td>Your ALSO Reseller Account ID</td></tr><tr><td>ALSO Username</td><td>alsoUsername</td><td>Secure</td><td><p>Technician: Editable<br>Automations: Read/Write</p><p>API: None</p></td><td>ALSO API User Username</td></tr><tr><td>ALSO Password</td><td>alsoPassword</td><td>Secure</td><td><p>Technician: Editable<br>Automations: Read/Write</p><p>API: None</p></td><td>ALSO API User Password</td></tr></tbody></table>

### **Global Custom Fields**

None

## Setup

First create a User in your ALSO portal to use with the API. Ensure it has read access to your customers, marketplace catalogue and subscription.

Next obtain your Reseller Account ID from ALSO. This can typically be seen in the URL in admin pages.

Finally make a note of your instance URL for example marketplace.also.co.uk and set these values in the ALSO custom fields on your Automation running machine.

Follow the details in the getting started guide for instructions on how to schedule this script.

There is a setting at the top of the script to let you choose to include the organization name in the license name or not.

## Matching

Organizations are matched based on the company name in ALSO to the Organization name in NinjaOne. If your names do not match you can edit the name override section at the top of the script to map the ALSO names to NinjaOne names.

## The Script

{% @github-files/github-code-block url="<https://github.com/lwhitelock/NinjaOneAutomation/blob/main/Billing_Scripts/ALSO_NinjaOne_Sync.ps1>" %}


# NinjaOne - Auto Documentation

Details for NinjaOne Automated Documentation


# Getting Started

Contains the common setup instructions for all my NinjaOne Documentation scripts.

### Step 1 - Select / Install a machine to run scripts

I highly recommend using a dedicated Windows Server Core machine for running scripts which will not be used for anything else. The machine used for scripts should not be accessible by anyone other than your System Administrator accounts. I also recommend running it as a VM in a secured data centre. This machine will get access to the API Keys for all of your services which is why it is important to keep it secure.

### Step 2 - Create a new Organization

In NinjaOne create a new organization which will house the machine you wish to use for executing scripts.

### Step 3 - Create a custom role for your script running machine

Depending on if you are using a Windows Desktop or Server operating system for executing scripts, create a new custom role under the corresponding role types inside NinjaOne

### Step 4 - Update Technician Permissions

Update your technician roles and permissions to allow access to both the role and organization to only system administrators. This is because the machine needs to have access to secure custom fields which will store client\_credentials API credentials. These credentials have the equivalent of system administrator permissions which are why these restrictions should be put in place.

### Step 4 - Install NinjaOne Agent / Move Machine

Install the NinjaOne Agent for the new Organization you created or move the machine you wish to use to that organization. Once it is installed edit the device and update the role to be the new one you created.

### Step 5 - Add Role Custom Fields

All the automated documentation scripts will require NinjaOne API details stored in secure custom fields. These should be role custom fields and only assigned to your script runner role. Some scripts will also require the addition of extra role fields to store API credentials for services they are integrating with as well as the addition of global custom fields to store the data that gets generated. The guides for specific integrations will detail what the requirements are.

The core role custom fields are:

| Display Name           | Name                 | Type   | Permissions                                                        | Description                                                                                   |
| ---------------------- | -------------------- | ------ | ------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- |
| NinjaOne Client ID     | ninjaoneClientId     | Secure | <p>Technician: Editable<br>Automations: Read Only<br>API: None</p> | Stores the API Client ID                                                                      |
| NinjaOne Client Secret | ninjaoneClientSecret | Secure | <p>Technician: Editable<br>Automations: Read Only<br>API: None</p> | Stores the API Client Secret                                                                  |
| NinjaOne Instance      | ninjaoneInstance     | Text   | <p>Technician: Editable<br>Automations: Read Only<br>API: None</p> | Stores the name of the NinjaOne Instance used for example app.ninjarmm.com or eu.ninjarmm.com |

Please make sure the field names match exactly, it is possible to use different names if you wish, but this will require you to edit the automated documentation scripts.

### Step 6 - Assign fields to your script role

Assign the newly created custom fields to the role you created.

### Step 7 - Create API Credentials

Create a new Machine to Machine API application with client credentials authentication and the monitoring and management scopes.

### Step 8 - Set the credentials at the device level custom fields

Set the credentials you generated at the device level custom fields for your script running machine.

### Step 9 - Create Overview Company

Create a new company in NinjaOne called 'Global Overview' This is used for populating reports and other information across all companies.

### Step 10 - Schedule scripts

Follow the setup instructions for specific scripts and then override the device policy to schedule them in.


# Performance Graphs

Populates Custom Fields with graphs for performance history of devices.

These scripts are designed to populate performance information into WYSIWYG custom fields. There are two scripts; one to gather the required performance information into a local json file on a device and a second to aggregate the data and generate the graphs. There are three options for the graphs you can generate (you can  generate all 3 to their own fields or just the ones you want):

24 Hours - This will show the performance data for last 24 hours

Last 30 Days to 24 Hours - This will generate a graph for the last 30 days up until 24 hours in the past.

Last 90 Days to 30 Days - This will generate a graph for the last 90 days until 30 days in the past.

<figure><img src="/files/TwLtZZxo3MUxCncgPUe6" alt=""><figcaption></figcaption></figure>

### Setup

To configure this you will need to create 3 device custom fields to store the different graphs:

| Field Name            | Field Description        | Type    | Automation Permissions | Definition Scope |
| --------------------- | ------------------------ | ------- | ---------------------- | ---------------- |
| 24HourPerformanceData | 24 Hour Performance Data | WYSIWYG | Write                  | Device           |
| 30DayPerformanceData  | 30 Day Performance Data  | WYSIWYG | Write                  | Device           |
| 90DayPerformanceData  | 90 Day Performance Data  | WYSIWYG | Write                  | Device           |

<figure><img src="/files/P8OiyMjuDIGmjw2641Mn" alt=""><figcaption></figcaption></figure>

Optionally you can also set the Advanced Setting to automatically expand the fields if you wish.

### The Scripts

#### Data Gathering

Add this script to your automation library and then add it as a script condition set to run every 5 minutes to the policy of any windows devices you wish to monitor.

{% @github-files/github-code-block url="<https://github.com/lwhitelock/NinjaOneAutomation/blob/main/PerformanceGraphs/Data-Gathering.ps1>" %}

#### Graph Generation and Data Aggregation

Configure this script either as a scheduled task or as a condition set to run once per hour. This script relies on the data generated by the data generation script.

{% @github-files/github-code-block url="<https://github.com/lwhitelock/NinjaOneAutomation/blob/main/PerformanceGraphs/Graph-Aggregation.ps1>" %}


# Enhanced Alerts

Provide a custom field with additional alert information at Organization and Device level.

This script will populate a custom field on Organizations and Devices. It will show a prioritized list of alerts sorted by Severity, Priority then Created Date. It will also display a small graph detailing when the specific alert has been triggered on the device in the last 30 days.

It will also populate a view across organizations of Critical and Major severity items into the Global Overview company.

<figure><img src="/files/bzOlWHYG93V1StpVZrKO" alt=""><figcaption></figcaption></figure>

## **Requirements**

Make sure the [Getting Started](/ninjaone-auto-documentation/getting-started) guide has been followed

### **NinjaOne Products**

Core RMM

### **Recommended Schedule**

Once per hour

### **Role Setting Custom Fields**

None

### **Global Custom Fields**

<table data-full-width="true"><thead><tr><th>Display Name</th><th>Name</th><th>Type</th><th>Permissions</th><th>Scopes</th><th>Description</th></tr></thead><tbody><tr><td>Device Alert Summary</td><td>deviceAlertSummary</td><td>WYSIWYG</td><td><p>Technician: Read Only<br>Automations: None</p><p>API: Read/Write</p></td><td>Organization, Location, Device</td><td>Displays the Alert Summary</td></tr></tbody></table>

## The Script

{% @github-files/github-code-block url="<https://github.com/lwhitelock/NinjaOneAutomation/blob/main/DocumentationScripts/NinjaOne-Alert-Summary.ps1>" %}


# Enhanced Ticketing Reports

Provide enhanced ticketing reports to a custom field or HTML Document.

This script will populate a custom field into each Organization that has logged tickets in the configured time range. It will provide data on Technician Time Tracked, Technicians Comments made and then break these up by Tickets, Technicians and Tags per Organization. It will also produce a company wide report showing the information per Organization into the Global Overview company.

There is also an option which will output the report into an HTML document in the location you configure in the script.

<figure><img src="/files/LVMMGy7QJ3M61nTVzNtb" alt=""><figcaption></figcaption></figure>

## **Requirements**

Make sure the [Getting Started](/ninjaone-auto-documentation/getting-started) guide has been followed

### **NinjaOne Products**

Core RMM

NinjaOne Ticketing

### **Recommended Schedule**

Once per day / Once per month depending on time interval settings and your requirements

### **Role Setting Custom Fields**

None

### **Global Custom Fields**

<table data-full-width="true"><thead><tr><th>Display Name</th><th>Name</th><th>Type</th><th>Permissions</th><th>Scopes</th><th>Description</th></tr></thead><tbody><tr><td>Ticketing Reports</td><td>ticketingReports</td><td>WYSIWYG</td><td><p>Technician: Read Only<br>Automations: None</p><p>API: Read/Write</p></td><td>Organization</td><td>Displays the ticketing reports</td></tr></tbody></table>

## NinjaOne Settings

By default the script will use the All Tickets Board please make sure you add the following columns to the board:

* Ticket ID
* Last Updated
* Tracked Time

If you wish to use your own board with custom filters it is possible by updating the board ID, but please make sure it also has the above columns.

## Script Settings

This script has several settings you can configure.

#### Mode

There are several different modes you can configure for the report to configure the date range you would like to generate reports for.

LASTDAYS - This mode lets you configure an additional $LastDays settings with the number of days you would like to configure in the past from the date the report is run.

LAST30 - This will generate the reports for the last 30 days.

LASTCALENDARMONTH - This will generate the reports for the previous calendar month.

LAST90 - This will generate the reports for the last 90 days.

LAST3CALENDARMONTHS - This will generate the reports for the previous 3 calendar months.

CUSTOM - This lets you set an additional $StartDate and $EndDate with the exact date range you would like to generate reports for.

#### Output

There are two modes you can enable for output the first is $OutputToCustomField which will generate reports into the specified custom field. You can also configure the name of the Global Overview company if you wish to change it.

The second option is $OutputToFile which will generate an HTML file with all the reports to the specified directory.

## The Script

{% @github-files/github-code-block url="<https://github.com/lwhitelock/NinjaOneAutomation/blob/main/DocumentationScripts/NinjaOne-Ticketing-Report.ps1>" %}


# Aruba InstantOn

Automatically Document Aruba InstantOn Sites and Devices to NinjaOne

This script will create NinjaOne Documentation templates and documents for Aruba InstantOn sites and devices.&#x20;

<figure><img src="/files/MnmFuCRPoKrbzRkB14GU" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/bs34DfokTl3p3rztT6sr" alt=""><figcaption></figcaption></figure>

## **Requirements**

Make sure the [Getting Started](/ninjaone-auto-documentation/getting-started) guide has been followed

### **NinjaOne Products**

Core RMM

NinjaOne Documentation

### **Recommended Schedule**

Once per hour

### **Role Setting Custom Fields**

Add these custom fields to your script runner custom role that would have been setup in the Getting Started guide.

<table data-full-width="true"><thead><tr><th>Display Name</th><th width="254.8">Name</th><th>Type</th><th>Permissions</th><th>Description</th></tr></thead><tbody><tr><td>Aruba Instant On Password</td><td>arubaInstantOnPassword</td><td>Secure</td><td><p>Technician: Editable<br>Automations: Read/Write</p><p>API: None</p></td><td>The Aruba InstantOn Username</td></tr><tr><td>Aruba Instant On Username</td><td>arubaInstantOnUsername</td><td>Secure</td><td><p>Technician: Editable<br>Automations: Read/Write</p><p>API: None</p></td><td>The Aruba InstantOn Password</td></tr></tbody></table>

### **Global Custom Fields**

**None**

## Setup

Create a new admin user that is invited to all your Aruba InstantOn sites. Make sure this user does not have MFA enabled, ensure you set a strong password.

Once this is created edit the Aruba InstantOn Username and Password fields on your script running device to add in these credentials.

## Matching

This script will match based on Aruba InstantOn sites which have the same name as NinjaOne Organizations. If it fails to match it will try to match on existing Aruba InstantOn Site Documents which have the same name as the site.

To manually map Sites to Organizations, run the script once and then create an empty Aruba InstantOn Site document under the NinjaOne Organization you would like the site mapped to with a name that exactly matches the Aruba InstantOn Site.

## The Script

{% @github-files/github-code-block url="<https://github.com/lwhitelock/NinjaOneAutomation/blob/main/DocumentationScripts/NinjaOne-Aruba-InstantOn.ps1>" %}


# CloudFlare

Automatically Document CloudFlare Zones to NinjaOne

This script will generate a NinjaOne Document template and NinjaOne documents for every domain contained in CloudFlare

<figure><img src="/files/z1n4qxQbiepm4CTFPE2s" alt=""><figcaption></figcaption></figure>

## **Requirements**

Make sure the [Getting Started](/ninjaone-auto-documentation/getting-started) guide has been followed

### **NinjaOne Products**

Core RMM

NinjaOne Documentation

### **Recommended Schedule**

Once per day

### **Role Setting Custom Fields**

<table data-full-width="true"><thead><tr><th>Display Name</th><th width="254.8">Name</th><th>Type</th><th>Permissions</th><th>Description</th></tr></thead><tbody><tr><td>CloudFlare API Token</td><td>cloudflareToken</td><td>Secure</td><td><p>Technician: Editable<br>Automations: Read/Write</p><p>API: None</p></td><td>Your CloudFlare API Token</td></tr></tbody></table>

### **Global Custom Fields**

None

## Setup

To run this script create a new CloudFlare API Token with the following permissions:

* All accounts - Account Settings:Read
* All zones - Origin Rules:Read, Zone Settings:Read, Zone:Read, DNS:Read, SSL and Certificates:Read, Logs:Read, Page Rules:Read, Firewall Services:Read, Analytics:Read

Once this is created edit the CloudFlare API Token field on your script running device to add in this key.

## Matching

Domains are matched using NinjaOne Cloud Monitors. In order to match a domain to an Organization configure a cloud monitor that points to that domain as the target of the Cloud Monitor.

Alternatively if you do not wish to create a Cloud Monitor, you can run the script once and then create a blank Cloudflare document under the correct organization with a name that matches the domain in CloudFlare.

## The Script

{% @github-files/github-code-block url="<https://github.com/lwhitelock/NinjaOneAutomation/blob/main/DocumentationScripts/NinjaOne-CloudFlare.ps1>" %}


# NinjaOne - IT Glue to NinjaOne Documentation Migration

This scripts provides the ability to migrate from IT Glue to NinjaOne Documentation via an automatic migration.

{% hint style="danger" %}

## This is an unofficial script and not supported by NinjaOne. For problems please log an issue on Github or visit the NinjaOne Community Discord <http://discord.gg/ninjaone>

{% endhint %}

This script is based off my original IT Glue to Hudu migration script which had many improvements from Mendy Green (<https://www.risingtidegroup.net/>) which have been incorporated into this script where appropriate.

## Requirements

1. You must have NinjaOne Documentation enabled and NinjaOne IT Asset Management enabled if you wish to migrate configurations which do not already existing in NinjaOne as devices. ( NinjaOne account managers can enable Asset Management)
2. An IT Glue subscription with API access
3. A full downloaded export of your IT Glue account including passwords.
4. PowerShell 7

## Getting Started

{% hint style="info" %}
The machine you use for the migration will need to store your passwords and data in an unencrypted format during the migration. Make sure this is a secure machine and using something such as Bitlocker to keep your data secure during the migration process.
{% endhint %}

1. Make sure you have setup Organizations, Locations and devices in NinjaOne for any of the configurations you wish to have linked to NinjaOne devices. Configurations that are not found will be created as Unmanaged Devices. Organizations and Locations that don't exist will also be created.
2. Obtain an API Key from NinjaOne, create a Web Application with Monitoring, Management scopes, set a Redirect URI of `http://localhost:9193/`  and enable  allowed grant types of 'Authorization code' and 'Refresh token'
   1. Browse to Administration -> Apps -> API
   2. Click Add client app
   3. Select 'Wev (PHP, Java, .Net Core, etc. )
   4. Enter a name such as IT Glue Migration
   5. Enter a Redirect URI of `http://localhost:9193/` make sure to include the trailing `/`&#x20;
   6. Tick 'Monitoring' and ' Management' in the Scopes section.
   7. Tick 'Authorization code' and 'Refresh Token' under Allowed grant types.
   8. Add the application and make note of the client\_id and client\_secret.\
      \ <img src="/files/8nNUKJnz2ihBTz1T0Q5v" alt="" data-size="original">
3. Obtain an API key from IT Glue with password access.
   1. Browse to Admin -> API Keys
   2. Click the + button
   3. Enter a name
   4. Tick password access
   5. Click generate API Key
   6. Make a note of the API Key.
4. Export IT Glue Data
   1. Go to Admin -> Export Data
   2. Choose 'Entire account'
   3. Do not include activity logs
   4. Download the export and extract the contents onto a secure machine.
5. Download or clone the repository to your migration machine. <https://github.com/lwhitelock/ITGlue-NinjaOne-Migration>
6. Run `./ITGlue-NinjaOne-Migration.ps1`&#x20;
7. Follow the instructions to set your settings.
8. Follow the instructions to select what will import.

## Post migration actions / notes

* There will be a manual actions log of items that were not able to be migrated and will require you to work through.
* Logs and settings for the migration process are stored in %AppData%\NinjaOneMigration
  * If you wish to rerun a section of the migration delete the associated .json file from the MigrationsLogs file.
  * Once the migration is complete these files should be securely deleted as they will contain all your passwords and data.
  * If something goes wrong with the migration these files provide all the details of what was migrated to and where, so can be reviewed.

| IT Glue Item   | NinjaOne Item                          | Can be re-run?                                                        |
| -------------- | -------------------------------------- | --------------------------------------------------------------------- |
| Organizations  | Organizations                          | Yes - Matched on name. No Data updated                                |
| Locations      | Locations                              | Yes - Matched on name. No Data updated                                |
| Domains        | Domains - Apps and Services Document   | Yes - Matched on name. No Data updated                                |
| Configurations | Devices                                | Yes - Matched on name. No Data updated                                |
| Contacts       | Contacts                               | Yes - Matched on name. No Data updated                                |
| Asset Types    | Apps and Services Template             | Yes - Layouts will have new fields added, none removed                |
| Assets         | Apps and Services Documents            | Yes - Apps and Services Documents will be matched on name and updated |
| Articles       | Knowledge Base Articles                | No - Re-running will cause duplicate KB Articles                      |
| Passwords      | Passwords - Apps and Services Document | No - Will fail to create conflicting names.                           |

{% hint style="info" %}
Checklists are not able to be migrated as IT Glue do not include them in exports or via the Public API
{% endhint %}

Please see below for detailed information on what will be migrated and limitations.

### Organizations

IT Glue Organizations will be migrated to NinjaOne organizations. The following fields will be migrated:

* Name
* Description&#x20;
  * The first 1000 characters of the description in IT Glue will be migrated only
* Primary location if set in IT Glue&#x20;
  * See Locations section for more details on what is migrated.

#### Future Enhancements (no ETA)

* Allow the mapping of additional data such as quick notes and alerts to NinjaOne Organization custom fields

### Locations

IT Glue Locations will be migrated to NinjaOne Locations. The following fields will be migrated:

* Name
* Address&#x20;
  * Address fields in IT Glue will be merged into the address field in NinjaOne, For example address1 address2, state, etc.
* Descriptions
  * The first 250 characters of the description will be migrated into NinjaOne

#### Future Enhancements (No ETA)

* Allow the mapping of additional data such as notes to NinjaOne Location custom fields

### Domains

{% hint style="info" %}
Please note NinjaOne does not currently support creating Cloud Monitors via the API, due to this domains will be created as Apps and Services documents in NinjaOne. For monitoring cloud monitors will need to be manually created for them.
{% endhint %}

The following fields will be migrated:

* Name
* Notes

#### Future enhancements (No ETA)

* Run a one time Domain report utilising the CIPP domain checks.
* Provide a script that will utilise these documents to perform ongoing monitoring.
* Move to cloud monitors once an API is available.

### Configurations

IT Glue Configurations will be matched to existing NinjaOne devices. It is recommended to have pre-created devices in NinjaOne via monitoring them with an agent or NMS.

Configurations will be matched by Name to System Name or Display Name, inside a matched organization.

The migration tool can create devices from configurations as Unmanaged Devices, if NinjaOne IT Asset Management is enabled and Unmanaged device roles are created.

The following fields will be migrated when unmanaged devices are created:

* Name
* Serial Number
* Purchased At -> Warranty Start
* Warranty expires at -> Warranty End

#### Future enhancements (no ETA)

* Map additional fields to custom field values
* Update details on existing devices in NinjaOne if not present
* Map values to core Asset Fields in NinjaOne once released (10.0)

### Contacts

IT Glue Contacts will be matched via email address against Technicians and End-Users. It will not match against Contacts.

Items being migrated will be created as End-Users with no role.  Invitations will not be sent to end users when added.

The following fields will be migrated when contacts are created:

* First name
* Last name
* First email address
* First phone number

### Asset Types

Flexible asset types will be migrated to NinjaOne Apps and Services Document Templates.

The following field types will be migrated:

| IT Glue Field Type           | NinjaOne Field Type                                   |
| ---------------------------- | ----------------------------------------------------- |
| Checkbox                     | Checkbox                                              |
| Date                         | Date                                                  |
| Number - No decimal places   | Integer                                               |
| Number - With decimal places | Decimal                                               |
| Select                       | Dropdown                                              |
| Text                         | Text                                                  |
| Textbox                      | WYSIWYG                                               |
| Upload                       | Attachment<sup>1</sup>                                |
| Tag - Users                  | Not supported                                         |
| Tag - Checklists             | Not supported                                         |
| Tag - Checklist Templates    | Not supported                                         |
| Tag - Contacts               | Not supported                                         |
| Tag - Configurations         | Device multi-select                                   |
| Tag - Documents              | Not supported                                         |
| Tag - Domains                | Support coming with NinjaOne release 11.0<sup>2</sup> |
| Tag - Passwords              | Support coming with NinjaOne release 11.0<sup>2</sup> |
| Tag - Locations              | Location multi-select                                 |
| Tag - Organizations          | Organization multi-select                             |
| Tag - SSL Certificates       | Not Supported                                         |
| Tag - Tickets                | Not Supported                                         |
| Tag - Flexible Assets        | Support coming with NinjaOne release 11.0<sup>2</sup> |
| Percent                      | Integer                                               |
| Password                     | Secure                                                |

{% hint style="info" %}

1. NinjaOne supports the following file types jpg, jpeg, png, gif, cab, txt, log, pdf, csv, mp3, eml, dot, wbk, doc, docx, rtf, xls, xlsx, ods, ppt, pptx, pps, ppsx, sldx, vsd, vsdx, xml, html, zip, rar, tar. For other types you can zip them. NinjaOne also only supports a single item to an attachment fields so will only automatically migrate the first supported item. Additional items can be uploaded to related items.
2. For unsupported fields, NinjaOne will be releasing an Apps and Services dropdown field in 11.0 which will extend support for more fields.
   {% endhint %}

#### Future Enhancements (No ETA)

* Optional link to unsupported items via WYSWYG fields by using an html link.
* Optional add unsupported items to related items.
* Upload additional files to related items.
* Automatically zip unsupported types.
* Add support for additional types with the new field NinjaOne is releasing.

### Knowledge Base Articles

Knowledge base articles will be imported to to NinjaOne. If an internal company has been set the articles there will be migrated to the Global Knowledge Base in NinjaOne, all others will be migrated to their organization.

Images must have  a format of jpg, jpeg, png or gif to be embedded in articles.

There may be formatting issues based on differences in NinjaOne and IT Glue's HTML engines.

#### Future Enhancements (No ETA)

* Upload attached files
* Create relations automatically
* Rewrite default styles to improve layout in NinjaOne

### Passwords

Passwords embedded into assets will be migrated to secure fields on Apps and Services Documents itself.

All other passwords will be migrated to a new Apps and Services template called 'Passwords'

The following fields will be imported:

* Name
* Notes -> NinjaOne Description Field
* Category -> List of categories will be populated by the ones currently in use in IT Glue
* Username
* Password
* OTP Secret -> The OTP secret will be imported to a NinjaOne Secure Field
* URL

#### Future Enhancements (No ETA)

* Add TOTP secret to a secure related item to generate TOTP codes.
* Add relations.
* Convert OTP Secret fields to TOTP codes when the TOTP field type is released in 11.0


