{"id":15116,"date":"2023-01-12T00:00:00","date_gmt":"2023-01-12T00:00:00","guid":{"rendered":"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/"},"modified":"2025-05-29T22:47:55","modified_gmt":"2025-05-29T22:47:55","slug":"test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server","status":"publish","type":"our_work","link":"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/","title":{"rendered":"Test Data Centralization, Standardization, and Storage using Python &#038; NI SystemLink Server"},"content":{"rendered":"<p>DMC helped the client deploy a solution centered around NI\u2019s SystemLink Server software.\u00a0 The SystemLink Server played several roles; it was the data aggregator from all test stands, the analysis engine of incoming data files, the long-term storage location of data files, and the asset monitor and software manager for the test stations.<\/p>\r\n\r\n<p>Our client had about a dozen identical data acquisition test stands deployed on their production floor that each executed a test sequence on a product and saved a data file locally to the PC. All of the data was saved long-term on each test stand, which made it difficult to retrieve data from a test stand or compare data between multiple. This also made them susceptible to data loss if a test station PC or a hard drive fails.<\/p>\r\n\r\n<p>DMC had to take a different approach, as we did not have the option to modify the test software directly to save the data to a central location rather than its C Drive. This was because the extensive validation for the customer\u2019s custom testing software had already passed, and they did not want to repeat the validation process.<\/p>\r\n\r\n<p>The customer was seeking a solution where the data from all test stations would be stored in one central location so that data from any test runs from any station could be quickly retrieved and analyzed.<\/p>\r\n\r\n<h3 class=\"wp-block-heading\">Python Windows Service<\/h3>\r\n\r\n<p>As we were not allowed to modify the test software directly, DMC wrote a Windows Service in Python that automatically moved new data files from each test stand to the SystemLink server.<\/p>\r\n\r\n<p>The service is installed on each test stand and monitors a particular directory on the test stand\u2019s C Drive for new data files. When new files are found, the service uploads them to the SystemLink Server using the server\u2019s REST API.<\/p>\r\n\r\n<h3 class=\"wp-block-heading\">SystemLink Systems Manager<\/h3>\r\n\r\n<p>The service was packaged into an NI Package using <a href=\"https:\/\/www.ni.com\/en-us\/support\/downloads\/software-products\/download.ni-package-builder.html#459838\" target=\"_blank\">NI Package Builder<\/a>. Using SystemLink\u2019s Systems Management module, this NI Package was remotely installed on each test stand using SystemLink\u2019s web interface. This installation included registering the Python application with Windows as a Windows Service so that it is always monitoring for new data files.<\/p>\r\n\r\n<h3 class=\"wp-block-heading\">SystemLink Data Plugin<\/h3>\r\n\r\n<p>The raw data files from each station were custom-formatted CSV files. Each file could store\u00a0different information about the test and any number of different test steps \u2014 which would make directly comparing data from CSV files difficult.<\/p>\r\n\r\n<p>SystemLink Server facilitates the transformation of custom file types and formats to a common <a href=\"https:\/\/www.ni.com\/en-us\/support\/documentation\/supplemental\/10\/ni-tdm-data-model.html\" target=\"_blank\">TDM<\/a> format using <a href=\"https:\/\/www.ni.com\/docs\/en-US\/bundle\/systemlink\/page\/enabling-access-to-new-file-types.html\" target=\"_blank\">DataPlugins<\/a>. After conversion to TDM, data can be much more efficiently searched.<\/p>\r\n\r\n<p>DMC wrote a custom DataPlugin in Python that converted the client\u2019s custom-formatted CSV files into TDM files. Any CSV data file that is uploaded to the SystemLink Server would automatically be transformed into the friendlier TDM format.<\/p>\r\n\r\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/www.ni.com\/en-us\/support\/documentation\/supplemental\/10\/ni-tdm-data-model.html\" target=\"_blank\"><img decoding=\"async\" alt=\"TDM Format\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165536\/Image_2.jpg\"  \/><\/a>Analysis Automation Script<\/h3>\r\n\r\n<p>After converting that test data into a common TDM format, DMC created an <a href=\"https:\/\/www.ni.com\/docs\/en-US\/bundle\/systemlink\/page\/analysis-automation.html\" target=\"_blank\">Analysis Automation<\/a> script that automatically triggers for incoming data files. The automation script extracts test metadata and a list of \u201csteps\u201d that were executed for the test from the TDM file. Then, this information is sent to SystemLink\u2019s <a href=\"https:\/\/www.ni.com\/docs\/en-US\/bundle\/systemlink\/page\/monitoring-tests.html\" target=\"_blank\">Test Monitor<\/a> module using the Test Monitor REST API.<\/p>\r\n\r\n<p>Test Monitor facilitates several useful functions for an engineer who may want to view past test results from a web browser:<\/p>\r\n\r\n<ol class=\"wp-block-list\">\r\n <li>Write queries to search for specific tests using test metadata (date and time, serial number, part number, operator, test station, etc.)<\/li>\r\n <li>View a list of steps and step results for a specific test<\/li>\r\n <li>Generate dashboards or reports for a quick view of the overall status of the testing systems.<\/li>\r\n<\/ol>\r\n\r\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/www.g2.com\/products\/systemlink\/reviews\" target=\"_blank\"><img decoding=\"async\" alt=\"Test Monitor\" src=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165535\/Test_Monitor.png\"  \/><\/a><\/h3>\r\n\r\n<h3 class=\"wp-block-heading\">Long-Term Storage<\/h3>\r\n\r\n<p>Raw CSV and processed TDM data files are saved long-term on the SystemLink server. These files are directly linked to their test in Test Monitor so that original test data files are easily accessible, searchable, viewable, and downloadable.<\/p>\r\n\r\n<p><strong>Learn more about DMC&#8217;s\u00a0<a href=\"https:\/\/www.dmcinfo.com\/services\/test-and-measurement-automation\">Test &#038; Measurement solutions<\/a>, and <a href=\"https:\/\/www.dmcinfo.com\/contact\">contact us<\/a> today for your next project.<\/strong><\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>DMC helped the client deploy a solution centered around NI\u2019s SystemLink Server software.\u00a0 The SystemLink Server played several roles; it was the data aggregator from all test stands, the analysis engine of incoming data files, the long-term storage location of data files, and the asset monitor and software manager for the test stations. Our client [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":15112,"template":"","meta":{"customer":"NI subcontracted us for this project; the end user was Cobham","summary":"<p>DMC helped a client in the aerospace industry deploy a <a href=\"https:\/\/www.ni.com\/en-us\/shop\/electronic-test-instrumentation\/application-software-for-electronic-test-and-instrumentation-category\/systemlink.html\" target=\"_blank\">SystemLink<\/a>-based solution to meet their needs to aggregate, analyze, and store data from numerous test stations.<\/p>\r\n\r\n<p><a href=\"https:\/\/www.ni.com\/docs\/en-US\/bundle\/systemlink\/page\/analysis-automation.html\" target=\"_blank\"><img alt=\"Flow of data chart\" src=\"https:\/\/www.dmcinfo.com\/wp-content\/uploads\/2025\/05\/Flow_of_Data_Chart.png\"  \/><\/a><\/p>\r\n","description":"","customer_benefits":"<ul>\r\n <li>Efficient data searching and comparison<\/li>\r\n <li>Automated analysis script<\/li>\r\n <li>Centralized long-term data storage<\/li>\r\n <li>Centralized test station software management<\/li>\r\n<\/ul>\r\n","components_used":"<ul>\r\n <li>SystemLink Server\r\n <ul style=\"list-style-type:circle;\">\r\n  <li>Systems Management<\/li>\r\n  <li>Test Monitor<\/li>\r\n  <li>Analysis Automation<\/li>\r\n  <li>Data Plugins<\/li>\r\n  <li>REST API<\/li>\r\n <\/ul>\r\n <\/li>\r\n <li>Python Windows Service<\/li>\r\n <li>NI Package Builder<\/li>\r\n<\/ul>\r\n","project":"NI:MCS - SNC Data Analysis and SystemLink","author":"Zen Iwankiw","notes":""},"work_category":[707,684,706],"class_list":["post-15116","our_work","type-our_work","status-publish","has-post-thumbnail","hentry","work_category-aerospace-and-defense","work_category-test-measurement-automation","work_category-test-stand"],"yoast_head":"<title>Test Data Centralization, Standardization, and Storage using Python &amp; NI SystemLink Server | DMC, Inc.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Test Data Centralization, Standardization, and Storage using Python &amp; NI SystemLink Server\" \/>\n<meta property=\"og:description\" content=\"DMC helped the client deploy a solution centered around NI\u2019s SystemLink Server software.\u00a0 The SystemLink Server played several roles; it was the data aggregator from all test stands, the analysis engine of incoming data files, the long-term storage location of data files, and the asset monitor and software manager for the test stations. Our client [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/\" \/>\n<meta property=\"og:site_name\" content=\"DMC, Inc.\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-29T22:47:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165537\/unnamed-file-143.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1400\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/\",\"url\":\"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/\",\"name\":\"Test Data Centralization, Standardization, and Storage using Python & NI SystemLink Server | DMC, Inc.\",\"isPartOf\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165537\/unnamed-file-143.png\",\"datePublished\":\"2023-01-12T00:00:00+00:00\",\"dateModified\":\"2025-05-29T22:47:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/#primaryimage\",\"url\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165537\/unnamed-file-143.png\",\"contentUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165537\/unnamed-file-143.png\",\"width\":1400,\"height\":500},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Work\",\"item\":\"https:\/\/www.dmcinfo.com\/our-work\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Test Data Centralization, Standardization, and Storage using Python &#038; NI SystemLink Server\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dmcinfo.com\/#website\",\"url\":\"https:\/\/www.dmcinfo.com\/\",\"name\":\"DMC, Inc.\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dmcinfo.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.dmcinfo.com\/#organization\",\"name\":\"DMC, Inc.\",\"url\":\"https:\/\/www.dmcinfo.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27171146\/dmc-logo-1.png\",\"contentUrl\":\"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27171146\/dmc-logo-1.png\",\"width\":418,\"height\":167,\"caption\":\"DMC, Inc.\"},\"image\":{\"@id\":\"https:\/\/www.dmcinfo.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929\",\"https:\/\/www.instagram.com\/dmcengineering\",\"https:\/\/www.youtube.com\/DMCEngineering\",\"https:\/\/www.linkedin.com\/company\/dmc-engineering\"]}]}<\/script>","yoast_head_json":{"title":"Test Data Centralization, Standardization, and Storage using Python & NI SystemLink Server | DMC, Inc.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/","og_locale":"en_US","og_type":"article","og_title":"Test Data Centralization, Standardization, and Storage using Python & NI SystemLink Server","og_description":"DMC helped the client deploy a solution centered around NI\u2019s SystemLink Server software.\u00a0 The SystemLink Server played several roles; it was the data aggregator from all test stands, the analysis engine of incoming data files, the long-term storage location of data files, and the asset monitor and software manager for the test stations. Our client [&hellip;]","og_url":"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/","og_site_name":"DMC, Inc.","article_publisher":"https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929","article_modified_time":"2025-05-29T22:47:55+00:00","og_image":[{"width":1400,"height":500,"url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165537\/unnamed-file-143.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/","url":"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/","name":"Test Data Centralization, Standardization, and Storage using Python & NI SystemLink Server | DMC, Inc.","isPartOf":{"@id":"https:\/\/www.dmcinfo.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/#primaryimage"},"image":{"@id":"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165537\/unnamed-file-143.png","datePublished":"2023-01-12T00:00:00+00:00","dateModified":"2025-05-29T22:47:55+00:00","breadcrumb":{"@id":"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/#primaryimage","url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165537\/unnamed-file-143.png","contentUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27165537\/unnamed-file-143.png","width":1400,"height":500},{"@type":"BreadcrumbList","@id":"https:\/\/www.dmcinfo.com\/our-work\/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Work","item":"https:\/\/www.dmcinfo.com\/our-work\/"},{"@type":"ListItem","position":2,"name":"Test Data Centralization, Standardization, and Storage using Python &#038; NI SystemLink Server"}]},{"@type":"WebSite","@id":"https:\/\/www.dmcinfo.com\/#website","url":"https:\/\/www.dmcinfo.com\/","name":"DMC, Inc.","description":"","publisher":{"@id":"https:\/\/www.dmcinfo.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dmcinfo.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dmcinfo.com\/#organization","name":"DMC, Inc.","url":"https:\/\/www.dmcinfo.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dmcinfo.com\/#\/schema\/logo\/image\/","url":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27171146\/dmc-logo-1.png","contentUrl":"https:\/\/cdn.dmcinfo.com\/wp-content\/uploads\/2025\/05\/27171146\/dmc-logo-1.png","width":418,"height":167,"caption":"DMC, Inc."},"image":{"@id":"https:\/\/www.dmcinfo.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/pages\/DMC-Inc\/107982009242929","https:\/\/www.instagram.com\/dmcengineering","https:\/\/www.youtube.com\/DMCEngineering","https:\/\/www.linkedin.com\/company\/dmc-engineering"]}]}},"_links":{"self":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/our_work\/15116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/our_work"}],"about":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/types\/our_work"}],"author":[{"embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/users\/8"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/media\/15112"}],"wp:attachment":[{"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/media?parent=15116"}],"wp:term":[{"taxonomy":"work_category","embeddable":true,"href":"https:\/\/www.dmcinfo.com\/wp-json\/wp\/v2\/work_category?post=15116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}