{"id":76194,"date":"2024-07-23T16:23:04","date_gmt":"2024-07-23T14:23:04","guid":{"rendered":"https:\/\/www.skaylink.com\/?p=76194"},"modified":"2024-08-28T15:08:34","modified_gmt":"2024-08-28T13:08:34","slug":"legacy-hell","status":"publish","type":"post","link":"https:\/\/www.skaylink.com\/en\/insights\/blog\/legacy-hell\/","title":{"rendered":"Legacy applications: Turning old into new"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"76194\" class=\"elementor elementor-76194\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7671530 header-keyvisual-container e-flex e-con-boxed e-con e-parent\" data-id=\"7671530\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7813f7af elementor-align-left elementor-widget elementor-widget-breadcrumbs\" data-id=\"7813f7af\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"breadcrumbs.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p id=\"breadcrumbs\"><span><span><a href=\"https:\/\/www.skaylink.com\/en\/\">Home<\/a><\/span><\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1453a616 e-con-full e-flex e-con e-child\" data-id=\"1453a616\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-535ff338 header-keyvisual-content e-con-full e-flex e-con e-child\" data-id=\"535ff338\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4f4de3b8 elementor-widget elementor-widget-image\" data-id=\"4f4de3b8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"2560\" height=\"1709\" src=\"https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/New-Blog-scaled.jpeg\" class=\"attachment-full size-full wp-image-76198\" alt=\"\" srcset=\"https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/New-Blog-scaled.jpeg 2560w, https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/New-Blog-300x200.jpeg 300w, https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/New-Blog-1024x683.jpeg 1024w, https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/New-Blog-768x513.jpeg 768w, https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/New-Blog-1536x1025.jpeg 1536w, https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/New-Blog-2048x1367.jpeg 2048w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-14a6ee5a e-con-full e-flex e-con e-child\" data-id=\"14a6ee5a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1b68425e elementor-widget elementor-widget-text-editor\" data-id=\"1b68425e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Blog<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-39bea76 elementor-widget elementor-widget-heading\" data-id=\"39bea76\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">The legacy hell<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-79a4387d elementor-widget elementor-widget-text-editor\" data-id=\"79a4387d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tSkaylink brings legacy applications to life by integrating modern components, new APIs, and a modern UI to improve efficiency and user experience.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-56ecd560 e-flex e-con-boxed e-con e-parent\" data-id=\"56ecd560\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-4a210b81 e-flex e-con-boxed e-con e-child\" data-id=\"4a210b81\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-366a50da e-flex e-con-boxed e-con e-child\" data-id=\"366a50da\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4f6751fa elementor-widget elementor-widget-text-editor\" data-id=\"4f6751fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tJuly 23, 2024\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-28ad9383 e-flex e-con-boxed e-con e-child\" data-id=\"28ad9383\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-47677ba8 e-flex e-con-boxed e-con e-child\" data-id=\"47677ba8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-616faf2c elementor-author-box--image-valign-middle elementor-widget elementor-widget-author-box\" data-id=\"616faf2c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"author-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-author-box\">\n\t\t\t\t\t\t\t<div  class=\"elementor-author-box__avatar\">\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/02\/cropped-skaylink_favicon_512x512px-300x300-1.webp\" alt=\"Picture of Skaylink\" loading=\"lazy\">\n\t\t\t\t<\/div>\n\t\t\t\n\t\t\t<div class=\"elementor-author-box__text\">\n\t\t\t\t\t\t\t\t\t<div >\n\t\t\t\t\t\t<span class=\"elementor-author-box__name\">\n\t\t\t\t\t\t\tSkaylink\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e23d769 e-flex e-con-boxed e-con e-child\" data-id=\"e23d769\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f3c6212 elementor-widget elementor-widget-author-box\" data-id=\"f3c6212\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"author-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-author-box\">\n\t\t\t\n\t\t\t<div class=\"elementor-author-box__text\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3f7343cc e-flex e-con-boxed e-con e-parent\" data-id=\"3f7343cc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-2777bc0a e-con-full e-flex e-con e-child\" data-id=\"2777bc0a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-21e433a3 elementor-widget elementor-widget-text-editor\" data-id=\"21e433a3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>We all know those clunky, outdated systems that refuse to die. Not only are they a physical burden, they\u2019re also a productivity black hole. Every hour spent wrestling with their quirks is an hour stolen from innovation and growth.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-68af4c9 e-flex e-con-boxed e-con e-parent\" data-id=\"68af4c9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-c419dca e-con-full e-flex e-con e-child\" data-id=\"c419dca\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4596ca2 elementor-widget elementor-widget-heading\" data-id=\"4596ca2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Short-term fix<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2b0d11f elementor-widget elementor-widget-text-editor\" data-id=\"2b0d11f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Harvest the low hanging fruits: Focus on modernizing key components one at a time. Upgrade databases, implement APIs, and automate manual processes. These small wins will make a big difference in day-to-day operations. Here\u2019s an example of what Skaylink does for our customers:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6723fdad e-flex e-con-boxed e-con e-parent\" data-id=\"6723fdad\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-419d2109 e-con-full e-flex e-con e-child\" data-id=\"419d2109\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-47a69fc8 elementor-widget elementor-widget-heading\" data-id=\"47a69fc8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Assessing the current state<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-655f69b9 elementor-widget elementor-widget-text-editor\" data-id=\"655f69b9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>For one of our customers, the culprit was a time tracking solution built years ago by an external company. It still worked quite well, but because it had never been updated, the UI was out of date. This resulted in a lower level of acceptance by new users. In addition, the software was a client-server application without web interface. It was impossible to provide external users with access to the time tracking software without giving them VPN access or installing the client on their devices. We could have gone with an RDP-based solution, but that wouldn\u2019t have fixed the ugly UI.<\/p><p><span style=\"color: var( --e-global-color-text ); text-align: var(--text-align); letter-spacing: var( --e-global-typography-9ae4c6f-letter-spacing ); word-spacing: var( --e-global-typography-9ae4c6f-word-spacing );\">Moreover, the data center hosting this application was scheduled to close. This meant that cloud migration for both the application and the database was an additional challenge. The customer\u2019s cloud governance required authentication via Entra ID, which was not provided by the application in its current state.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-36851c5 e-flex e-con-boxed e-con e-parent\" data-id=\"36851c5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-9f06df4 e-con-full e-flex e-con e-child\" data-id=\"9f06df4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7ca51ba elementor-widget elementor-widget-heading\" data-id=\"7ca51ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Making a plan<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b6bd56a elementor-widget elementor-widget-text-editor\" data-id=\"b6bd56a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Skaylink took a closer look at the options for modernizing the application. There were some well-documented internal interfaces that could be accessed through .Net. The decision was made to create both an API and a UI. With these two approaches we\u2019ve solved the problem of the outdated UI and also allowed external users to use the application with Entra ID (Azure Active Directory) authentication. A serverless implementation was not an option for this application because of its heavy reliance on COM objects. So we decided to use an instance of IIS to host the API. We needed virtual machines to run the application anyway, so we decided to put it all together.<\/p><p><span style=\"color: var( --e-global-color-text ); text-align: var(--text-align); letter-spacing: var( --e-global-typography-9ae4c6f-letter-spacing ); word-spacing: var( --e-global-typography-9ae4c6f-word-spacing );\">We used Terraform to deploy the required infrastructure with an APU and an instance in Azure. Because infrastructure as code (IaC) makes things easy, we also deployed a development stage that allowed us and the customer to test further changes to this application.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e469450 elementor-widget elementor-widget-image\" data-id=\"e469450\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"605\" height=\"268\" src=\"https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/Bild1-1.jpg\" class=\"attachment-large size-large wp-image-76202\" alt=\"\" srcset=\"https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/Bild1-1.jpg 605w, https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/Bild1-1-300x133.jpg 300w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e03d464 e-flex e-con-boxed e-con e-parent\" data-id=\"e03d464\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-d2e9dbe e-con-full e-flex e-con e-child\" data-id=\"d2e9dbe\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ec51d9b elementor-widget elementor-widget-heading\" data-id=\"ec51d9b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Adding an API<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-36fdc01 elementor-widget elementor-widget-text-editor\" data-id=\"36fdc01\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Adding an API to an existing application opens up a world of possibilities. It enables seamless communication with other software systems, enhances interoperability, and facilitates data exchange. With an API, an application can easily sync with project management tools, payroll systems, and more, streamlining workflows and improving efficiency.<\/p><p><span style=\"color: var( --e-global-color-text ); text-align: var(--text-align); letter-spacing: var( --e-global-typography-9ae4c6f-letter-spacing ); word-spacing: var( --e-global-typography-9ae4c6f-word-spacing );\">For the time tracking application, we created a REST API based on .Net 6 and C#. This API provides all endpoints needed to create, read, update and delete time entries in the software. It uses the internal COM interfaces to transport the input from the API to the software itself.<\/span><\/p><p><span style=\"color: var( --e-global-color-text ); text-align: var(--text-align); letter-spacing: var( --e-global-typography-9ae4c6f-letter-spacing ); word-spacing: var( --e-global-typography-9ae4c6f-word-spacing );\">While implementing the API we also created a suitable PowerShell module to test the API. This module can also be used for automation.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0d2d916 e-flex e-con-boxed e-con e-parent\" data-id=\"0d2d916\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-384f100 e-con-full e-flex e-con e-child\" data-id=\"384f100\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9034d34 elementor-widget elementor-widget-heading\" data-id=\"9034d34\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Implementing a new UI<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-15cca77 elementor-widget elementor-widget-text-editor\" data-id=\"15cca77\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>To achieve the objective of having a modern web-based UI, we created one based on the API endpoints using VueJS 3. A visually appealing and user-friendly UI is critical to the adoption of a software application. By revamping the UI of the time tracking application, we have not only improved its aesthetics, but also the usability and user experience. Create a stunning new UI that users will love by incorporating modern design principles, intuitive navigation, and responsive layouts.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd5da8b elementor-widget elementor-widget-image\" data-id=\"dd5da8b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"402\" src=\"https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/Bild2-1-1024x514.png\" class=\"attachment-large size-large wp-image-76204\" alt=\"\" srcset=\"https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/Bild2-1-1024x514.png 1024w, https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/Bild2-1-300x151.png 300w, https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/Bild2-1-768x386.png 768w, https:\/\/www.skaylink.com\/wp-content\/uploads\/2024\/06\/Bild2-1.png 1215w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c8e52e4 e-flex e-con-boxed e-con e-parent\" data-id=\"c8e52e4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-9be422d e-con-full e-flex e-con e-child\" data-id=\"9be422d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b5fde5c elementor-widget elementor-widget-heading\" data-id=\"b5fde5c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Streamlining the time tracking processes<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-99cfaf6 elementor-widget elementor-widget-text-editor\" data-id=\"99cfaf6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>With the API integrated and a new UI, it was time to address the time tracking processes. We identified repetitive tasks and bottlenecks in the current workflow and leveraged the capabilities of the API to automate these processes. From time entry and project allocation to reporting and analysis, we\u2019ve made every aspect of time tracking more efficient and intuitive for users.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1cb891b e-flex e-con-boxed e-con e-parent\" data-id=\"1cb891b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-bdda810 e-con-full e-flex e-con e-child\" data-id=\"bdda810\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e3ecb88 elementor-widget elementor-widget-heading\" data-id=\"e3ecb88\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Testing and iteration<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-32e7ccd elementor-widget elementor-widget-text-editor\" data-id=\"32e7ccd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>When modernizing an application, it\u2019s important to perform thorough testing to ensure that everything works as designed. User feedback was gathered and incorporated into the next sprint. Continuous improvement is key to delivering a modernization project that meets the evolving needs of your organization.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c3d7ec7 e-flex e-con-boxed e-con e-parent\" data-id=\"c3d7ec7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-b38b449 e-con-full e-flex e-con e-child\" data-id=\"b38b449\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-acb761b elementor-widget elementor-widget-heading\" data-id=\"acb761b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Conclusion<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4b6450a elementor-widget elementor-widget-text-editor\" data-id=\"4b6450a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Modernizing an outdated time tracking application is a strategic investment that pays off in terms of improved efficiency, productivity, and user satisfaction. By adding an API and implementing a beautiful new UI, you can transform your time tracking processes and empower your team to work smarter, not harder. Harness the power of modernization and unlock the full potential of your workloads.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Skaylink brings legacy applications to life by integrating modern components, new APIs, and a modern UI to improve efficiency and user experience.<\/p>\n","protected":false},"author":23,"featured_media":76198,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[100],"tags":[167],"class_list":["post-76194","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-cloud-migration"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.skaylink.com\/en\/wp-json\/wp\/v2\/posts\/76194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skaylink.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skaylink.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skaylink.com\/en\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skaylink.com\/en\/wp-json\/wp\/v2\/comments?post=76194"}],"version-history":[{"count":40,"href":"https:\/\/www.skaylink.com\/en\/wp-json\/wp\/v2\/posts\/76194\/revisions"}],"predecessor-version":[{"id":79817,"href":"https:\/\/www.skaylink.com\/en\/wp-json\/wp\/v2\/posts\/76194\/revisions\/79817"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.skaylink.com\/en\/wp-json\/wp\/v2\/media\/76198"}],"wp:attachment":[{"href":"https:\/\/www.skaylink.com\/en\/wp-json\/wp\/v2\/media?parent=76194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skaylink.com\/en\/wp-json\/wp\/v2\/categories?post=76194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skaylink.com\/en\/wp-json\/wp\/v2\/tags?post=76194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}