Troubleshooting
Restart the data migration
For troubleshooting purposes, it is possible to restart the data migration. There are two alternative methods to restart the data migration.
Alternative 1: Restart the migration with EventStore (v2)
Restart the migration to migrate the data based on the EventStore (v2), including Microsoft 365 data before Snow License Manager 9.5.1.
-
Stop the services SnowLicenseManagerEventStoreService and SnowLicenseManagerOffice365Service.
-
Remove the
o365
folder in%programdata%\snowsoftware\licensemanager\eventstore
. -
Optional: replace the database folder with the database folder from the other server to use data from another server. This can for example be done by copying production server data into a staging environment.
-
Execute the sql script:
USE SNOWLICENSEMANAGER exec Sp_msforeachtable @command1='Truncate Table
?',@whereand='and Schema_Id=Schema_id(''o365'')' -
Start the service SnowLicenseManagerEventStoreService.
-
Wait for about a minute to allow all health checks in the EventStore to complete.
-
Start the service SnowLicenseManagerOffice365Service.
Alternative 2: Restart the migration with EventStore (v3)
Restart the migration to migrate the data based on the EventStore (v3), including Microsoft 365 data after Snow License Manager 9.5.1.
-
Stop the services SnowLicenseManagerEventStoreService and SnowLicenseManagerOffice365Service.
-
Verify that the
appsettings.json
in the Microsoft 365 service directory has the setting UseOldEventStore set to false. -
Optional: replace the o365 folder with the o365 folder from the other server to use data from another server. This can for example be done by copying production server data into a staging environment.
-
Execute the sql script:
USE SNOWLICENSEMANAGER exec Sp_msforeachtable @command1='Truncate Table
?',@whereand='and Schema_Id=Schema_id(''o365'')' -
Start the service SnowLicenseManagerEventStoreService.
-
Wait for about a minute to allow all health checks in the EventStore to complete.
-
Start the service SnowLicenseManagerOffice365Service.
Restart when the migration does not complete
If the migration stops and does not complete, perform the following steps:
-
Stop the Microsoft 365 service.
-
Navigate to the
appsettings.json
file located inC:\Program Files\Snow Software\Snow License Manager\Services\Office365
. -
Lower the values for ReadingEventsBatchSize, WritingEventsBatchSize and SQLBatchSize.
-
Save the file.
-
Restart the Microsoft 365 service.
Event Warehouse service crashes with TCP/UDP error
The Snow Event Warehouse service connects to the MS SQL database using a TCP/IP connection.
If the following error messages appear in your Event Warehouse logging, try the respective suggested solution.
Error messages:
-
[Date and time stamp] FTL Failed to connect to the database: Unable to open tcp connection with host [Host Name]: dial tcp [GUID]:1433: connectex: No connection could be made because the target machine actively refused it.
-
[Date and time stamp] FTL Failed to connect to the database: Unable to get instances from Sql Server Browser on host [Host Name]: read udp 10.xx.xx.xx:xxxx->10.xx.xx.xx:xxxx: i/o timeout
Solution:
-
Enable TCP/IP for your SQL Server.
Refer to the article Enable or Disable a Server Network Protocol in Microsoft documentation for more information on how to enable TCP/IP.
-
Restart Snow EventWarehouse service and Microsoft 365 service.
Error message:
[Date and time stamp] FTL Failed to connect to the database: Unable to get instances from Sql Server Browser on host [Host Name]: read udp 10.195.18.75:61007->10.195.17.43:1434:
Solution:
-
Enable TCP/IP for your SQL Server.
-
Restart Snow EventWarehouse service and Microsoft 365 service.
Refer to the article Enable or Disable a Server Network Protocol in Microsoft documentation for more information on how to enable TCP/IP.
-
Set the Firewall setting UnicastResponsesToMulticastBroadcastDisabled to FALSE (default). The setting is a property of the INetFwProfile interface.
noteThe setting is set to false to be able to perform a request to the SQL Server Engine on the 1434 port. If the connection string contains a named instance, e.g. Data Source=[XYZ]\sam, and the port number assigned to this instance is not provided, the driver tries to get the TCP port number via an UDP connection.
Refer to the article INetFwProfile::get_UnicastResponsesToMulticastBroadcastDisabled method (netfw.h) in Microsoft documentation for more information on how to change this setting.
If enabling the Firewall setting did not work, there can be an error message like:
Failed to connect to the database: Unable to get instances from Sql Server Browser on host XXXXXXXXX: read udp X.X.X.X:61007->X.X.X.X:1434: i/o timeout
The suggested solution is then to:
-
Provide a fixed port for a named instance.
Use TCP port 1433, since it is the most common port allowed through the firewall.
Refer to the article Configure a Server to Listen on a Specific TCP Port in Microsoft documentation for more information on how to change these settings.
-
Open the port in Firewall.
noteThe TCP port has to be opened in the Windows Firewall (even if a default instance is used). It applies to routine connections to the default installation of the Database Engine, or a named instance that is the only instance running on the computer. Be aware that named instances can have special considerations in the firewall setting.
Refer to the article Configure a Windows Firewall for Database Engine Access in Microsoft documentation for more information on how to change these settings.
-
Add the port to the SLM connection string.
The connection string, with a named instance, can be configured to something similar to
Data Source=[XYZ]\sam,60000
.
With this solution, the driver does not need to go over UDP but will instead open a TCP connection directly.
NATS timeout issue
Error message:
-
Message bus request failed with timeout Timeout occurred. SnowSoftware.Platform.EventBus.Abstractions.Exceptions.EventBusTimeoutException: Message bus request failed with timeout Timeout occurred.
---> NATS.Client.NATSTimeoutException: Timeout occurred. at NATS.Client.Connection.<>c__DisplayClass132_0.<<requestAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown --- at SnowSoftware.Platform.EventBus.Nats.Generic.NatsRequester.<>c__DisplayClass9_0`1.
Solution:
-
Stop the SnowLicenseManagerDataAccessService and the SnowLicenseManagerOffice365Service services.
-
Increase the db timeout in the DataAccessService.
-
Increase the db timeout and NATS timeout in Office365.
-
Check that EventWarehouse and NATS are working.
-
Start the SnowLicenseManagerDataAccessService and the SnowLicenseManagerOffice365Service services.
-
Aggregate a new import.
Microsoft365 database timeout issue
-
Stop the service SnowLicenseManagerOffice365Service.
-
Increase the db timeout in Office365.
-
Start the service SnowLicenseManagerOffice365Service.
-
Aggregate a new import.
Microsoft365 BFF database timeout issue
-
Stop the service SnowLicenseManagerMicrosoft365BFF.
-
Increase the db timeout in Microsoft365BFF.
-
Start the service SnowLicenseManagerMicrosoft365BFF.
Microsoft365 BFF Insights optimization
-
Stop the service SnowLicenseManagerMicrosoft365BFF.
-
Navigate to the
appsettings.json
file located inC:\Program Files\Snow Software\Snow License Manager\Services\Microsoft365BFF
. -
Change InsightsOptimization to true.
-
Start the service SnowLicenseManagerMicrosoft365BFF.
Message payload size is exceeded
Error message:
The message payload size exceeds the max payload size and no data broker is available for this connection
Solution:
-
Stop the Microsoft 365 service.
-
Navigate to the
appsettings.json
file located inC:\Program Files\Snow Software\Snow License Manager\Services\Office365
.-
Decrease the ReadingEventsBatchSize and the WritingEventsBatchSize to 150 or 200.
-
Increase the SLMDataAccessServiceTimeoutSec for Regular to 800 and for Long to 900.
-
-
Start the Microsoft 365 service.