Frequently Asked Questions
SnowMirror is a smart data replication tool for ServiceNow. It replicates the data from a ServiceNow instance to an on-premise database such as Oracle or SQL Server. Having the data locally enables seamless integration with standard reporting or BI tools.
Please have a look at the following 2-minute video to understand what SnowMirror is. https://www.youtube.com/watch?v=7RJ0gPsZvKw
SnowMirror creates a ServiceNow read-replica in your own database. Having selected ServiceNow tables in your data center can have many benefits. These are the three most popular use cases:
- Reporting and Business Intelligence – Connect your corporate reporting to the local mirror database without impacting your production ServiceNow environment.
- Simplify integrations – Read-only integrations do not need a live connection to ServiceNow. Connect your applications to a mirror database and simplify your integration architecture.
- Bakup and Disaster Recovery – Backup data and documents to your data center and make SnowMirror part of your disaster recovery plans.
SnowMirror is a ServiceNow Technology Partner and a member of the Early Access Program. We keep pace with ServiceNow development and we release at the same time as ServiceNow. There is always a SnowMirror version compatible with the latest ServiceNow release.
Please see the release notes to see the past releases.
No, SnowMirror performs a scheduled replication. It pulls the data from ServiceNow in configurable intervals. It is possible to set up very low intervals between synchronization runs and achieve a near-real-time environment.
We recommend upgrading at least quarterly. The reason for that is that ServiceNow is also upgrading their instances and the replication agent has to be compatible with the ServiceNow cloud.
Our customers are always notified by newsletters about important changes and they can schedule the upgrades according to their needs.
The standard SnowMirror product is a data replication tool. There is only one-way data transfer from ServiceNow to a database. It is not possible to load the data back to ServiceNow.
However, SnowMirror Backup is a proper backup tool which allows you to recover individual ServiceNow tables.
SnowMirror Backup is a smart data backup tool for ServiceNow. It allows you to backup ServiceNow data onto a filesystem in your local environment. It is a great tool to avoid ServiceNow data loss caused by human errors, malicious insiders or errors in automated scripts.
SnowMirror is an on-premise software. It is basically an agent pulling the data from ServiceNow. It can be installed on a physical or virtual server in your environment as well as in your AWS or Azure clouds.
It is possible to install SnowMirror into a high-available cluster. Multiple SnowMirror installations cooperate and if one SnowMirror is down then the rest of the cluster can keep the replication process up and running.
There is no performance or data throughput advantage, just the availability gain. We recommend this type of deployment for users where SnowMirror is part of a critical process (e.g. critical reporting).
This advanced feature is available in the Cluster Edition only.
SnowMirror is designed to have as small ServiceNow footprint as possible. It downloads just the changes, it uses integration semaphores, it has highly optimized API calls, it load-balances the traffic using all ServiceNow nodes and many other features.
Please read more about SnowMirror performance in this knowledge article.
SnowMirror downloads just the deltas. So, regular, incremental loads take typically just a few seconds or minutes. However, the initial load may take a while depending on the total number of records in a table. Millions of records can take even several hours.
A ServiceNow node is basically an application server in the ServiceNow infrastructure handling requests sent to a ServiceNow instance. SnowMirror is able to work on a lower level, identify individual ServiceNow nodes and download the data from multiple nodes in parallel. The more nodes you have the higher data throughput is SnowMirror able to achieve.
SnowMirror is able to discover the number of ServiceNow nodes. Just go to Settings -> Performance and press the Discover Nodes button.
Another option is using the Node Switcher Chrome plug-in or going to ServiceNow -> System Diagnostics -> Diagnostics Page and count the number of nodes having Logged In Users in positive numbers. The rest of the nodes are typically just stand-by nodes.
In spite of being so much older, the SOAP API is still being considered a better choice for replication purposes. This API proves to be more stable and has a better performance especially for bigger ServiceNow instances.
The REST API works fine too. For some of the mid-sized ServiceNow instances, it is even faster than SOAP. However, it tends to time out from time to time which makes the replication process less stable and less predictable.
No. The only mandatory requirement is to have a user account which has sufficient rights to access ServiceNow data and meta-data. However, if using the SOAP API, we recommend activating the Aggregate Web Services ServiceNow plug-in to improve the user experience, enable a few fancy features and add a small performance boost.
The Aggregate Web Services plug-in is a small plugin adding the aggregate method into all direct web services in ServiceNow. SnowMirror is using this new operation to count the records to insert or update before the actual download starts. By activating the plugin the progress bars work better, the count buttons enable you to count records in tables and SnowMirror is able to optimize the downloading algorithm a bit.
The main database is the mirror DB where the ServiceNow data is being stored. However, SnowMirror requires to maintain its configuration in a second database. So-called config DB. The config DB is configured during the installation phase and it is using H2 embedded database by default. The mirror DB can be configured in SnowMirror Settings page.
See the picture of the whole SnowMirror architecture.
Yes. If you need high availability there is a possibility to install several SnowMirror installations. Some of our customers even install one SnowMirror into their DRC centers. SnowMirror architecture is cluster-ready and if one node goes down the other node is still synchronizing the data. We usually support this kind of requirements individually and we cooperate on the customer cluster design.
The HA setup is available only for the Cluster Edition.
No. If you have several ServcieNow instances you have to install several SnowMirrors. The idea behind it is the same as for the MID servers.
Yes. And it is quite usual to run a mirror for a test ServiceNow instance and a development instance on one server. It is necessary to configure different ports and different Windows service names. Use the Custom Installation option if installing using the Windows installer. A similar approach applies to Linux systems.
SnowMirror in not resource intensive. It is a Java application running as a Windows service or a Unix daemon. It requires a server to be installed on. The server can be a small virtual or physical machine. The typical configuration is a dual core CPU server with 2 GB RAM and 5 GB HDD. We even recommend to install SnowMirror on the same machine as the ServiceNow MID server. You can save one server using this approach.
Read more about SnowMirror requirements in the admin guide:
Knowledge Base (6)
If your synchronization failed and you got an error similar to java.sql.BatchUpdateException: Data truncation, it can have two different root causes.
1) Something has changed on the ServiceNow side. Usually someone made a string field longer than before. For example your ServiceNow admin made incident short_description longer (max length) from 80 to 200. So it means the new incident subjects cannot fit into your varchar(80) in the mirror database. To fix this, either manually alter the mirror table (column) or re-create the whole synchronization and perform an initial data load.
2) ServiceNow does not always respect its own data constraints. E.g. try to synchronize the sys_perspective table and it fails by default because one column in this table is configured to have 40 chars as its max length however the longest string in the column has 125 characters by default. There is no other solution than to manually alter the mirror database table to reflect the real situation.
Auto Schema Update feature enables to modify the mirrored table automatically according to the changes on the ServiceNow side. If enabled all the table columns are being synchronized. If there is a new columns in ServcieNow, SnowMirror automatically adds it into the mirror table. The same applies for modified columns a removed ones.
ServiceNow enables to specify a parent for a table. It means all the columns in the parent table are used for the child table as well. For example the table task (parent) and incident (child). Many tables are derived from the task table. The whole CMDB is build on this inheritance design pattern. Etc.
SnowMirror enables two approaches when synchronizing inherited tables (e.g. incident)
1) Synchronize two tables. This is the way ServiceNow itself stores the data. You have to synchronize two tables (e.g. task and incident) and to obtain the incident record you have to join the tables using the sys_id primary key in both tables. The advantage of this approach is lower redundancy. If you are synchronizing several tables derived from the task table the situation is simpler to perform some type of queries.
2) Synchronize only one table with all parent inherited columns included. This is an approach that a typical user expects. To sync the data as it is displayed in the web application. Check the checkbox Include inherited columns in the synchronization settings to choose this approach.
To identify new or updated records in ServiceNow is a straightforward way. However to find the records deleted in a certain time window is not so simple. Most of the tables are audited so the default strategy search for deleted records in the system journals. You can choose different strategies if you need or if the table is not being audited. Truncate option means to perform Clean & Synchronize operation for every sync run (initial load every run). Diff is a good way to find the deleted records in a non-audited table and None ignores the deletes at all.
Please read more about the delete strategies in our user guide.
Please note that synchronization settings for Views do not contain the delete strategy choice at all. It always performs the Truncate option because there is no way how to achieve incremental updates.
SnowMirror does not access the database directly. ServiceNow does not allow neither customers not partners to access the underlying instance database. All the data is downloaded using the our-of-the-box API called Direct Web Services. Event the original ODBC driver uses this API which is the reason why the driver is so limited and slow.
SnowMirror distribution contains an optional ServiceNow dashboard application. If you have installed the update set into your ServiceNow instance enable this setting to start sending SnowMirror activity into the ServiceNow instance.
No. You pay only for every SnowMirror connected to your production ServiceNow instance. Test, UAT, development or sandbox instances are for free.
I get this error while entering the license. Your ServiceNow is running at xxx.service-now.com but this license was issued for yyy.service-now.com only.
SnowMirror license is bound to a certain ServiceNow instance host name (e.g. yourcompany.service-now.com). So the ServiceNow host name you configure in Settings -> ServiceNow has to match the license host name. Please do not forget to restart SnowMirror after you change the instance in the Settings. In case of a trial license please feel free to generate yourself another trial license on our website if you need if for a different ServiceNow instance.