Hi Dojo!
I'm working on an Automation Script that modifies the Hyperlinks.xml file located in C:\Skyline DataMiner\. After making changes to this file programmatically, I need to sync it.
Context:
In the DataMiner Cube UI, there's a manual option to do this via:
- Tools > Synchronization
- Type: File
- File:
C:/Skyline DataMiner/Hyperlinks.xml

I need to trigger this same synchronization programmatically from an Automation Script.
What I've Tried:
I attempted to use <strong>SyncRequestMessage</strong>, but I'm encountering an "Invalid base path" error:
string filePath = @"C:\Skyline DataMiner\Hyperlinks.xml"; SyncRequestMessage syncRequest = new SyncRequestMessage(); syncRequest.BasePath = @"Skyline DataMiner"; syncRequest.DataMinerID = engine.GetUserConnection().ServerDetails.AgentID; // ... populate ExistingFiles with Hyperlinks.xml info engine.SendSLNetMessage(syncRequest);
I've tried multiple BasePath formats (with/without drive letter, with/without trailing slash, relative paths, etc.) but all result in "Invalid base path" error.
My Questions:
- What SLNet message does the UI's "Tools > Synchronization" use for file synchronization? Is it
SyncRequestMessageor something else? - What is the correct way to construct this message? Specifically:
- What should
BasePathbe set to? - What format does the file path need to be in?
- Are there other required properties?
- What should
- Is there sample code or documentation showing how to programmatically sync files from an Automation Script?
- Are there alternative approaches to achieve file synchronization across the cluster from a script?
Hi Harun,
Indeed. Miguel Obregon explained it in that post 🙂
See the reply on the best answer 😉
Fell free to use any of those
Hi Harun,
Even when forcing a sync as requested, there is a good chance the file will not be synced. This is because the internal sync does not use the file-metadata to detect changes, but rather keeps an internal "last changed" time. Doing manual edits to the file bypasses this logic and the system may treat the files in sync, even if they are not.
A better approach would be to use the automation module to change the hyperlinks using the AddOrUpdateHyperlinkMessage.
This will ensure the change is treated as if you have done it through cube and the system will sync it accross the cluster instantly or during midnight sync.
Thanks for the help! I found a more targeted approach for syncing a specific file instead of the full DMS:
csharpvar setDataMinerInfoMessage = new SetDataMinerInfoMessage
{
What = 41, // NT_SEND_DMS_FILE_CHANGE
bInfo1 = Int32.MaxValue,
bInfo2 = Int32.MaxValue,
DataMinerID = engine.GetUserConnection().ServerDetails.AgentID,
IInfo1 = Int32.MaxValue,
IInfo2 = 32, // file change notification
StrInfo1 = @"C:Skyline DataMinerHyperlinks.xml", // full file path
};
engine.SendSLNetMessage(setDataMinerInfoMessage);
Key difference: What = 41 syncs only the specified file, while What = 64 syncs the entire DMS.