{"id":5121,"date":"2023-11-07T14:12:34","date_gmt":"2023-11-07T13:12:34","guid":{"rendered":"https:\/\/spectades.projectspace.digital\/planning-scheduling\/"},"modified":"2026-06-16T15:07:13","modified_gmt":"2026-06-16T13:07:13","slug":"planning-scheduling","status":"publish","type":"page","link":"https:\/\/www.spie-spectades.com\/en\/solutions\/planning-scheduling\/","title":{"rendered":"Planning &amp; Scheduling"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5121\" class=\"elementor elementor-5121 elementor-665\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-af11b6e e-con-full title e-flex e-con e-parent\" data-id=\"af11b6e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-02f9260 e-flex e-con-boxed e-con e-child\" data-id=\"02f9260\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-5ed43fe e-flex e-con-boxed e-con e-child\" data-id=\"5ed43fe\" 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-7dc2d84 elementor-widget elementor-widget-heading\" data-id=\"7dc2d84\" 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\"><span class=\"highlight\">Spectades Planning &amp; Scheduling solutions for Attune EAM<\/span><\/h1>\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<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-a378cee e-flex e-con-boxed e-con e-parent\" data-id=\"a378cee\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-07ea778 padded-top e-flex e-con-boxed e-con e-child\" data-id=\"07ea778\" 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-c3df26e elementor-mobile-align-center elementor-widget elementor-widget-button\" data-id=\"c3df26e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.spie-spectades.com\/en\/solutions\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"robur robur-left\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Back to solutions overview<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-1b08c3b e-flex e-con-boxed e-con e-child\" data-id=\"1b08c3b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-c9dd422 e-con-full e-flex e-con e-child\" data-id=\"c9dd422\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fa844a5 elementor-widget elementor-widget-heading\" data-id=\"fa844a5\" 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\">Achieve cost savings of up to 10% by planning efficiently<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7545a87 elementor-widget elementor-widget-text-editor\" data-id=\"7545a87\" 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 data-start=\"233\" data-end=\"811\">Effective planning and scheduling are critical to achieving control over maintenance operations and maximizing asset performance. <span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">SPIE Spectades<\/span><\/span> has developed the Planning &amp; Scheduling Work Planning solution for Octave Attune EAM that enables organizations to transition from reactive, ad hoc workflows to a structured and data-driven planning process. By integrating planning directly into the EAM environment, organizations gain real-time visibility into both incoming work and available resources, forming the foundation for consistent and scalable operations.<\/p><p data-start=\"813\" data-end=\"1414\">Our solution supports the full spectrum of maintenance activities, including preventive maintenance and unplanned corrective work. Work orders are centrally managed and intelligently matched with employee availability, qualifications, and capacity. This ensures that the right people are assigned to the right tasks at the right time, while maintaining compliance with operational constraints such as working hours and labor agreements. The result is a transparent planning process that improves decision-making, reduces scheduling conflicts, and eliminates the need for inefficient planning sessions.<\/p><p data-start=\"1416\" data-end=\"1974\">By combining workforce planning, asset management, and operational execution in a single system, the Planning &amp; Scheduling solution enhances efficiency across the entire maintenance organization. Planners and managers benefit from a clear, graphical overview of workloads, capacity, and priorities, enabling faster adjustments and better coordination. In practice, this leads to improved resource utilization, reduced downtime, and measurable cost savings, often up to 10%, while establishing a foundation for continuous improvement and operational excellence.<\/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<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-3aaba56 e-con-full e-flex e-con e-child\" data-id=\"3aaba56\" 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-9bf69b0 elementor-widget elementor-widget-image\" data-id=\"9bf69b0\" 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=\"1200\" height=\"675\" src=\"\/wp-content\/uploads\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution-1-1200x675.png\" class=\"attachment-large size-large wp-image-11186\" alt=\"\" srcset=\"https:\/\/www.spie-spectades.com\/wp-content\/uploads\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution-1-1200x675.png 1200w, https:\/\/www.spie-spectades.com\/wp-content\/uploads\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution-1-600x338.png 600w, https:\/\/www.spie-spectades.com\/wp-content\/uploads\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution-1-768x432.png 768w, https:\/\/www.spie-spectades.com\/wp-content\/uploads\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution-1-1536x864.png 1536w, https:\/\/www.spie-spectades.com\/wp-content\/uploads\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution-1.png 1672w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/>\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\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 data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-8a7f2f7 padded-top e-flex e-con-boxed e-con e-parent\" data-id=\"8a7f2f7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-9bc7b53 e-flex e-con-boxed e-con e-child\" data-id=\"9bc7b53\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-be1dc07 e-con-full e-flex e-con e-child\" data-id=\"be1dc07\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-77e7eca elementor-widget elementor-widget-heading\" data-id=\"77e7eca\" 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\">Enter your e-mail address to receive the whitepaper<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c7511ca elementor-widget elementor-widget-heading\" data-id=\"c7511ca\" 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<h3 class=\"elementor-heading-title elementor-size-default\">Want to learn more about our Planning &amp; Scheduling solution for Octave Attune EAM?<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-21a861d elementor-widget elementor-widget-text-editor\" data-id=\"21a861d\" 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 <strong>Spectades Planning &amp; Scheduling WP solution<\/strong>, you can professionalize and standardize your work and workforce planning processes. The solution provides greater visibility into scheduled activities, available capacity, and the allocation of the right resources at the right time.<\/p><p>Thanks to an intuitive and user-friendly planning environment, scheduling processes become more efficient and easier to manage. This not only saves valuable time but can also contribute to cost reductions of up to 10%.<\/p><p>Would you like to learn how your organization can achieve these benefits? Download our whitepaper and discover the possibilities.<\/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-1bcf209 elementor-widget elementor-widget-heading\" data-id=\"1bcf209\" 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\">SPS v3.7 video<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7a9d722 elementor-widget elementor-widget-video\" data-id=\"7a9d722\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;youtube_url&quot;:&quot;https:\\\/\\\/youtu.be\\\/opavo_UQzPI&quot;,&quot;loop&quot;:&quot;yes&quot;,&quot;video_type&quot;:&quot;youtube&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-wrapper elementor-open-inline\">\n\t\t\t<div class=\"elementor-video\"> <div class=\"brlbs-cmpnt-container brlbs-cmpnt-content-blocker brlbs-cmpnt-with-individual-styles\" data-borlabs-cookie-content-blocker-id=\"youtube-content-blocker\" data-borlabs-cookie-content=\"PHNjcmlwdD4KKGZ1bmN0aW9uKCkgewogICAgbGV0IGQgPSBudWxsOwoKICAgIC8vIGlmIHdlIGFyZSBpbiBhIGxvb3AsIHdlIG5lZWQgdG8gc2VsZWN0IHRoZSBjb3JyZWN0IHZpZGVvIGVsZW1lbnQsIHNpbmNlIFdpZGdldCBJRCBvY2N1cnMgbXVsdGlwbGUgdGltZXMgb24gcGFnZQogICAgY29uc3QgZWxlbXNJbkxvb3AgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkaXZbZGF0YS1lbGVtZW50b3ItdHlwZT0ibG9vcC1pdGVtIl0gZGl2LmVsZW1lbnRvci1lbGVtZW50LTdhOWQ3MjInKTsKICAgIGlmIChlbGVtc0luTG9vcC5sZW5ndGggPT09IDEpIHsKICAgICAgICBkID0gZWxlbXNJbkxvb3BbMF07CiAgICB9IGVsc2UgaWYgKGVsZW1zSW5Mb29wLmxlbmd0aCA+IDEpIHsKICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgPT09ICd1bmRlZmluZWQnIHx8IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNvbnN0IHRtcFZpZGVvV2lkZ2V0ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5jbG9zZXN0KCdbZGF0YS13aWRnZXRfdHlwZT0iYnJsYnNfdmlkZW8uZGVmYXVsdCJdJyk7CiAgICAgICAgaWYgKHRtcFZpZGVvV2lkZ2V0KSB7CiAgICAgICAgICAgIGQgPSB0bXBWaWRlb1dpZGdldDsKICAgICAgICB9CiAgICB9CgogICAgaWYgKGQgPT0gbnVsbCkgewogICAgICAgIGQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYuZWxlbWVudG9yLWVsZW1lbnQtN2E5ZDcyMicpOwogICAgfQoKICAgIGlmIChkID09IG51bGwpIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBkLmRhdGFzZXQud2lkZ2V0X3R5cGUgPSBkLmRhdGFzZXQud2lkZ2V0X3R5cGUucmVwbGFjZSgnYnJsYnNfJywgJycpOwogICAgZC5kYXRhc2V0LmJybGJzVW5ibG9ja2VkID0gJ3RydWUnOwoKICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gewogICAgICAgIGlmICh0eXBlb2YgZWxlbWVudG9yRnJvbnRlbmQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBlbGVtZW50b3JGcm9udGVuZC5ob29rcyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CiAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmRvQWN0aW9uKCdmcm9udGVuZC9lbGVtZW50X3JlYWR5L3ZpZGVvLmRlZmF1bHQnLCBqUXVlcnkoZCksIGpRdWVyeSkKICAgICAgICB9CiAgICB9LCAzMCkKfSkoKTsKPC9zY3JpcHQ+\"><div class=\"brlbs-cmpnt-cb-preset-c brlbs-cmpnt-cb-youtube\"> <div class=\"brlbs-cmpnt-cb-thumbnail\" style=\"background-image: url('https:\/\/www.spie-spectades.com\/wp-content\/uploads\/borlabs-cookie\/1\/yt_opavo_UQzPI_hqdefault.jpg')\"><\/div> <div class=\"brlbs-cmpnt-cb-main\"> <div class=\"brlbs-cmpnt-cb-play-button\"><\/div> <div class=\"brlbs-cmpnt-cb-content\"> <p class=\"brlbs-cmpnt-cb-description\">You are currently viewing a placeholder content from <strong>YouTube<\/strong>. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.<\/p> <a class=\"brlbs-cmpnt-cb-provider-toggle\" href=\"#\" data-borlabs-cookie-show-provider-information role=\"button\">More Information<\/a> <\/div> <div class=\"brlbs-cmpnt-cb-buttons\"> <a class=\"brlbs-cmpnt-cb-btn\" href=\"#\" data-borlabs-cookie-unblock role=\"button\">Unblock content<\/a> <a class=\"brlbs-cmpnt-cb-btn\" href=\"#\" data-borlabs-cookie-accept-service role=\"button\" style=\"display: inherit\">Accept required service and unblock content<\/a> <\/div> <\/div> <\/div><\/div><\/div>\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-6d29de7 e-con-full e-flex e-con e-child\" data-id=\"6d29de7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-274059e e-con-full e-flex e-con e-child\" data-id=\"274059e\" 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-68ecfcb elementor-widget elementor-widget-html\" data-id=\"68ecfcb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>@import url(https:\/\/fonts.bunny.net\/css?family=sans-serif:400,700);<\/style>\r\n<style>\r\n#_form_77_{font-size:14px;line-height:1.6;font-family:arial, helvetica, sans-serif;margin:0;box-shadow:none}._form_hide{display:none;visibility:hidden}._form_show{display:block;visibility:visible}#_form_77_._form-top{top:0}#_form_77_._form-bottom{bottom:0}#_form_77_._form-left{left:0}#_form_77_._form-right{right:0}#_form_77_ input[type=\"text\"],#_form_77_ input[type=\"tel\"],#_form_77_ input[type=\"date\"],#_form_77_ textarea{padding:8px;height:auto;border:#979797 1px solid;border-radius:4px;color:#000 !important;font-size:14px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#_form_77_ textarea{resize:none}#_form_77_ input::placeholder{color:#142341}#_form_77_ ._submit{cursor:pointer;font-family:arial, sans-serif;font-size:14px;text-align:center;background:#0f1e5a !important;border:0 !important;-moz-border-radius:4px !important;-webkit-border-radius:4px !important;border-radius:4px !important;width:100%;color:#ffffff !important;padding:16px !important}#_form_77_ ._submit:disabled{cursor:not-allowed;opacity:0.4}#_form_77_ ._submit.processing{position:relative}#_form_77_ ._submit.processing::before{content:\"\";width:1em;height:1em;position:absolute;z-index:1;top:50%;left:50%;border:double 3px transparent;border-radius:50%;background-image:linear-gradient(#0f1e5a, #0f1e5a), conic-gradient(#0f1e5a, #ffffff);background-origin:border-box;background-clip:content-box, border-box;animation:1200ms ease 0s infinite normal none running _spin}#_form_77_ ._submit.processing::after{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0}@keyframes _spin{0%{transform:translate(-50%, -50%) rotate(90deg)}100%{transform:translate(-50%, -50%) rotate(450deg)}}#_form_77_ ._close-icon{cursor:pointer;background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/esfkyjh1u_forms-close-dark.png\");background-repeat:no-repeat;background-size:14.2px 14.2px;position:absolute;display:block;top:11px;right:9px;overflow:hidden;width:16.2px;height:16.2px}#_form_77_ ._close-icon:before{position:relative}#_form_77_ ._form-body{font-family:sans-serif;font-size:14px;font-weight:400;color:black;margin-bottom:30px}#_form_77_ ._form-image-left{width:150px;float:left}#_form_77_ ._form-content-right{margin-left:164px}#_form_77_ ._form-branding{color:#fff;font-size:10px;clear:both;text-align:left;margin-top:30px;font-weight:100}#_form_77_ ._form-branding ._logo{display:block;width:130px;height:14px;margin-top:6px;background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/hh9ujqgv5_aclogo_li.png\");background-size:130px auto;background-repeat:no-repeat}#_form_77_ .form-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}#_form_77_ ._form-label,#_form_77_ ._form_element ._form-label{font-weight:bold;margin-bottom:5px;display:block}#_form_77_._dark ._form-branding{color:#333}#_form_77_._dark ._form-branding ._logo{background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/jftq2c8s_aclogo_dk.png\")}#_form_77_ ._form_element{position:relative;margin-bottom:10px;max-width:100%}#_form_77_ ._form_element *{font-size:14px}#_form_77_ ._form_element._clear{clear:both;width:100%;float:none}#_form_77_ ._form_element._clear:after{clear:left}#_form_77_ ._form_element :is(textarea, select, input[type=\"text\"], input[type=\"date\"], input[type=\"phone\"], input[type=\"email\"]),#_form_77_ ._form-element :is(textarea, select, input[type=\"text\"], input[type=\"date\"], input[type=\"phone\"], input[type=\"email\"]){background:white;color:#142341 !important;border-top:1px solid #cccccc;border-left:1px solid #cccccc;border-right:1px solid #cccccc;border-bottom:1px solid #cccccc;border-radius:0px}#_form_77_ ._form_element input[type=\"text\"],#_form_77_ ._form_element input[type=\"date\"],#_form_77_ ._form_element select,#_form_77_ ._form_element textarea:not(.g-recaptcha-response){display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-family:inherit}#_form_77_ ._field-wrapper{position:relative}#_form_77_ ._inline-style{float:left}#_form_77_ ._inline-style input[type=\"text\"]{width:150px}#_form_77_ ._inline-style:not(._clear){margin-right:20px}#_form_77_ ._form_element img._form-image{max-width:100%}#_form_77_ ._form_element ._form-fieldset{border:0;padding:0.01em 0 0 0;margin:0;min-width:0}#_form_77_ ._clear-element{clear:left}#_form_77_ ._full_width{width:100%}#_form_77_ ._form_full_field{display:block;width:100%;margin-bottom:10px}#_form_77_ input[type=\"text\"]._has_error,#_form_77_ textarea._has_error{border:#F37C7B 1px solid}#_form_77_ input[type=\"checkbox\"]._has_error{outline:#F37C7B 1px solid}#_form_77_ ._show_be_error{float:left}#_form_77_ ._error{display:block;position:absolute;font-size:14px;z-index:10000001}#_form_77_ ._error._above{padding-bottom:4px;bottom:39px;right:0}#_form_77_ ._error._below{padding-top:8px;top:100%;right:0}#_form_77_ ._error._above ._error-arrow{bottom:-4px;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #FFDDDD}#_form_77_ ._error._below ._error-arrow{top:0;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #FFDDDD}#_form_77_ ._error-inner{padding:12px 12px 12px 36px;background-color:#FFDDDD;background-image:url(\"data:image\/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8ZM9 3V9H7V3H9ZM9 13V11H7V13H9Z' fill='%23CA0000'\/%3E%3C\/svg%3E\");background-repeat:no-repeat;background-position:12px center;font-size:14px;font-family:arial, sans-serif;font-weight:600;line-height:16px;color:#000;text-align:center;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;box-shadow:0 1px 4px rgba(31, 33, 41, 0.298295)}@media only screen and (max-width:319px){#_form_77_ ._error-inner{padding:7px 7px 7px 25px;font-size:12px;line-height:12px;background-position:4px center;max-width:100px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}#_form_77_ ._error-inner._form_error{margin-bottom:5px;text-align:left}#_form_77_ ._button-wrapper ._error-inner._form_error{position:static}#_form_77_ ._error-inner._no_arrow{margin-bottom:10px}#_form_77_ ._error-arrow{position:absolute;width:0;height:0}#_form_77_ ._error-html{margin-bottom:10px}.pika-single{z-index:10000001 !important}#_form_77_ input[type=\"text\"].datetime_date{width:69%;display:inline}#_form_77_ select.datetime_time{width:29%;display:inline;height:32px}#_form_77_ input[type=\"date\"].datetime_date{width:69%;display:inline-flex}#_form_77_ input[type=\"time\"].datetime_time{width:29%;display:inline-flex}#_form_77_ ._form-title,#_form_77_ ._html-code :is(h1, h2, h3, h4, h5, h6){font-family:sans-serif;font-size:24px;font-weight:700;color:black}@media (min-width:320px) and (max-width:667px){::-webkit-scrollbar{display:none}#_form_77_{margin:0;width:100%;min-width:100%;max-width:100%;box-sizing:border-box}#_form_77_ *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:1em}#_form_77_ ._form-content{margin:0;width:100%}#_form_77_ ._form-inner{display:block;min-width:100%}#_form_77_ ._form-title,#_form_77_ ._inline-style{margin-top:0;margin-right:0;margin-left:0}#_form_77_ ._form-title{font-size:1.2em}#_form_77_ ._form_element{margin:0 0 20px;padding:0;width:100%}#_form_77_ ._form-element,#_form_77_ ._inline-style,#_form_77_ input[type=\"text\"],#_form_77_ label,#_form_77_ p,#_form_77_ textarea:not(.g-recaptcha-response){float:none;display:block;width:100%}#_form_77_ ._row._checkbox-radio label{display:inline}#_form_77_ ._row,#_form_77_ p,#_form_77_ label{margin-bottom:0.7em;width:100%}#_form_77_ ._row input[type=\"checkbox\"],#_form_77_ ._row input[type=\"radio\"]{margin:0 !important;vertical-align:middle !important}#_form_77_ ._row input[type=\"checkbox\"]+span label{display:inline}#_form_77_ ._row span label{margin:0 !important;width:initial !important;vertical-align:middle !important}#_form_77_ ._form-image{max-width:100%;height:auto !important}#_form_77_ input[type=\"text\"]{padding-left:10px;padding-right:10px;font-size:16px;line-height:1.3em}#_form_77_ input[type=\"radio\"],#_form_77_ input[type=\"checkbox\"]{display:inline-block;width:1.3em;height:1.3em;font-size:1em;margin:0 0.3em 0 0;vertical-align:baseline}#_form_77_ button[type=\"submit\"]{padding:20px;font-size:1.5em}#_form_77_ ._inline-style{margin:20px 0 0 !important}#_form_77_ ._inline-style input[type=\"text\"]{width:100%}}#_form_77_ .sms_consent_checkbox{position:relative;width:100%;display:flex;align-items:flex-start;padding:20px 0}#_form_77_ .sms_consent_checkbox input[type=\"checkbox\"]{float:left;margin:5px 10px 10px 0}#_form_77_ .sms_consent_checkbox .sms_consent_message{display:inline;float:left;text-align:left;margin-bottom:10px;font-size:14px;color:#7D8799}#_form_77_ .sms_consent_checkbox .sms_consent_message.sms_consent_mini{width:90%}#_form_77_ .sms_consent_checkbox ._error._above{right:auto;bottom:0}#_form_77_ .sms_consent_checkbox ._error._above ._error-arrow{right:auto;left:5px}@media (min-width:320px) and (max-width:667px){#_form_77_ .sms_consent_checkbox ._error._above{top:-30px;left:0;bottom:auto}}#_form_77_ .field-required{color:#FF0000}#_form_77_{position:relative;text-align:left;margin:25px auto 0;padding:20px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:white !important;border-top:0px solid #b0b0b0 !important;border-right:0px solid #b0b0b0 !important;border-bottom:0px solid #b0b0b0 !important;border-left:0px solid #b0b0b0 !important;max-width:500px;-moz-border-radius:0px !important;-webkit-border-radius:0px !important;border-radius:0px !important;color:#FFFFFF}#_form_77_ ._show_be_error{min-width:100%}#_form_77_._inline-form,#_form_77_._inline-form ._form-content{font-family:sans-serif;font-size:14px;font-weight:400}#_form_77_._inline-form ._row span:not(.field-required),#_form_77_._inline-form ._row label{font-family:sans-serif;font-size:14px;font-weight:400;line-height:1.6em;color:black}#_form_77__inlineform input[type=\"text\"],#_form_77__inlineform input[type=\"date\"],#_form_77__inlineform input[type=\"tel\"],#_form_77__inlineform select,#_form_77__inlineform textarea:not(.g-recaptcha-response){font-family:sans-serif;font-size:14px;font-weight:400;font-color:#000000;line-height:1.6em}#_form_77_._inline-form ._html-code,#_form_77_._inline-form .sms_consent_message,#_form_77_._inline-form ._form-thank-you{font-family:sans-serif;font-size:14px;font-weight:400;color:black}#_form_77_._inline-form ._form-label,#_form_77_._inline-form ._form-emailidentifier,#_form_77_._inline-form ._form-checkbox-option-label{font-family:sans-serif;font-size:14px;font-weight:700;line-height:1.6em;color:black}#_form_77_._inline-form ._submit{margin-top:12px;font-family:sans-serif;font-size:14px;font-weight:400}#_form_77_._inline-form ._html-code h1,#_form_77_._inline-form ._html-code h2,#_form_77_._inline-form ._html-code h3,#_form_77_._inline-form ._html-code h4,#_form_77_._inline-form ._html-code h5,#_form_77_._inline-form ._html-code h6,#_form_77_._inline-form ._form-title{margin-bottom:0;display:block}#_form_77_._inline-form ._form-branding{font-family:\"IBM Plex Sans\", Helvetica, sans-serif;font-size:13px;font-weight:100;font-style:normal;text-decoration:none}#_form_77_:before,#_form_77_:after{content:\" \";display:table}#_form_77_:after{clear:both}#_form_77_._inline-style{width:auto;display:inline-block}#_form_77_._inline-style input[type=\"text\"],#_form_77_._inline-style input[type=\"date\"]{padding:10px 12px}#_form_77_._inline-style button._inline-style{position:relative;top:27px}#_form_77_._inline-style p{margin:0}#_form_77_._inline-style ._button-wrapper{position:relative;margin:16px 12.5px 0 20px}#_form_77_._inline-style ._button-wrapper:not(._clear){margin-left:0}#_form_77_ ._form-thank-you{position:relative;left:0;right:0;text-align:center;font-size:18px}#_form_77_ ._form-pc-confirmation ._submit{margin-top:16px}@media (min-width:320px) and (max-width:667px){#_form_77_._inline-form._inline-style ._inline-style._button-wrapper{margin-top:20px !important;margin-left:0 !important}}#_form_77_ .iti{width:100%}#_form_77_ .iti.iti--allow-dropdown.iti--separate-dial-code{width:100%}#_form_77_ .iti input{width:100%;border:#979797 1px solid;border-radius:4px}#_form_77_ .iti--separate-dial-code .iti__selected-flag{background-color:#FFFFFF;border-radius:4px}#_form_77_ .iti--separate-dial-code .iti__selected-flag:hover{background-color:rgba(0, 0, 0, 0.05)}#_form_77_ .iti__country-list{border-radius:4px;margin-top:4px;min-width:460px}#_form_77_ .iti__country-list--dropup{margin-bottom:4px}#_form_77_ .phone-error-hidden{display:none}#_form_77_ .phone-error{color:#E40E49}#_form_77_ .phone-input-error{border:1px solid #E40E49 !important}#_form_77_._inline-form ._form-content ._form-list-subscriptions-field fieldset{margin:0;margin-bottom:1.1428571429em;border:none;padding:0}#_form_77_._inline-form ._form-content ._form-list-subscriptions-field fieldset:last-child{margin-bottom:0}#_form_77_._inline-form ._form-content ._form-list-subscriptions-field legend{margin-bottom:1.1428571429em}#_form_77_._inline-form ._form-content ._form-list-subscriptions-field label{display:flex;align-items:flex-start;justify-content:flex-start;margin-bottom:0.8571428571em}#_form_77_._inline-form ._form-content ._form-list-subscriptions-field label:last-child{margin-bottom:0}#_form_77_._inline-form ._form-content ._form-list-subscriptions-field input{margin:0;margin-right:8px}#_form_77_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label{display:block;font-weight:400;margin-top:-4px}#_form_77_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label-with-description{display:block;font-weight:700;margin-top:-4px}#_form_77_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-description{margin:0;font-size:0.8571428571em}#_form_77_._inline-form ._form-content ._form-list-subscriptions-field ._form-subscriptions-unsubscribe-all-description{line-height:normal;margin-top:-2px}<\/style>\r\n<form method=\"POST\" action=\"https:\/\/spectades.activehosted.com\/proc.php\" id=\"_form_77_\" class=\"_form _form_77 _inline-form  _dark\" novalidate data-styles-version=\"5\">\r\n  <input type=\"hidden\" name=\"u\" value=\"77\" \/>\r\n  <input type=\"hidden\" name=\"f\" value=\"77\" \/>\r\n  <input type=\"hidden\" name=\"s\" \/>\r\n  <input type=\"hidden\" name=\"c\" value=\"0\" \/>\r\n  <input type=\"hidden\" name=\"m\" value=\"0\" \/>\r\n  <input type=\"hidden\" name=\"act\" value=\"sub\" \/>\r\n  <input type=\"hidden\" name=\"v\" value=\"2\" \/>\r\n  <input type=\"hidden\" name=\"or\" value=\"cdae4763-abc8-4287-b483-4899f0120520\" \/>\r\n  <div class=\"_form-content\">\r\n    <div class=\"_form_element _x43288355 _full_width _clear\" >\r\n      <h2 class=\"_form-title\">\r\n        Download SPS WP Whitepaper\r\n      <\/h2>\r\n    <\/div>\r\n    <div class=\"_form_element _x63572626 _full_width _clear\" >\r\n      <div class=\"_html-code\">\r\n        <p>\r\n          Enter your name and contact details and you will receive the Planning &amp; Scheduling Work Planning solution for Attune EAM Whitepaper in your inbox\r\n        <\/p>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"_form_element _x55059994 _full_width \" >\r\n      <label for=\"fullname\" class=\"_form-label\">\r\n        Name\r\n      <\/label>\r\n      <div class=\"_field-wrapper\">\r\n        <input type=\"text\" id=\"fullname\" name=\"fullname\" placeholder=\" \" \/>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"_form_element _x67825515 _full_width \" >\r\n      <label for=\"email\" class=\"_form-label\">\r\n        Business E-mail<span class=\"field-required\">\r\n        *\r\n      <\/span>\r\n    <\/label>\r\n    <div class=\"_field-wrapper\">\r\n      <input type=\"text\" id=\"email\" name=\"email\" placeholder=\" \" required\/>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"_button-wrapper _full_width\">\r\n    <button id=\"_form_77_submit\" class=\"_submit\" type=\"submit\">\r\n      Receive whitepaper\r\n    <\/button>\r\n  <\/div>\r\n  <div class=\"_clear-element\">\r\n  <\/div>\r\n<\/div>\r\n<div class=\"_form-thank-you\" style=\"display:none;\">\r\n<\/div>\r\n<\/form><script>\r\nwindow.cfields = [];\r\nwindow._show_thank_you = function(id, message, trackcmp_url, email) {\r\n    var form = document.getElementById('_form_' + id + '_'), thank_you = form.querySelector('._form-thank-you');\r\n    form.querySelector('._form-content').style.display = 'none';\r\n    thank_you.innerHTML = message;\r\n    thank_you.style.display = 'block';\r\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\r\n    var visitorObject = window[vgoAlias];\r\n    if (email && typeof visitorObject !== 'undefined') {\r\n        visitorObject('setEmail', email);\r\n        visitorObject('update');\r\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\r\n        \/\/ Site tracking URL to use after inline form submission.\r\n        _load_script(trackcmp_url);\r\n    }\r\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\r\n    thank_you.setAttribute('tabindex', '-1');\r\n    thank_you.focus();\r\n};\r\nwindow._show_unsubscribe = function(id, message, trackcmp_url, email) {\r\n    var form = document.getElementById('_form_' + id + '_'), unsub = form.querySelector('._form-thank-you');\r\n    var branding = form.querySelector('._form-branding');\r\n    if (branding) {\r\n        branding.style.display = 'none';\r\n    }\r\n    form.querySelector('._form-content').style.display = 'none';\r\n    unsub.style.display = 'block';\r\n    form.insertAdjacentHTML('afterend', message)\r\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\r\n    var visitorObject = window[vgoAlias];\r\n    if (email && typeof visitorObject !== 'undefined') {\r\n        visitorObject('setEmail', email);\r\n        visitorObject('update');\r\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\r\n        \/\/ Site tracking URL to use after inline form submission.\r\n        _load_script(trackcmp_url);\r\n    }\r\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\r\n};\r\nwindow._show_error = function(id, message, html) {\r\n    var form = document.getElementById('_form_' + id + '_'),\r\n        err = document.createElement('div'),\r\n        button = form.querySelector('button[type=\"submit\"]'),\r\n        old_error = form.querySelector('._form_error');\r\n    if (old_error) old_error.parentNode.removeChild(old_error);\r\n    err.innerHTML = message;\r\n    err.className = '_error-inner _form_error _no_arrow';\r\n    var wrapper = document.createElement('div');\r\n    wrapper.className = '_form-inner _show_be_error';\r\n    wrapper.appendChild(err);\r\n    button.parentNode.insertBefore(wrapper, button);\r\n    var submitButton = form.querySelector('[id^=\"_form\"][id$=\"_submit\"]');\r\n    submitButton.disabled = false;\r\n    submitButton.classList.remove('processing');\r\n    if (html) {\r\n        var div = document.createElement('div');\r\n        div.className = '_error-html';\r\n        div.innerHTML = html;\r\n        err.appendChild(div);\r\n    }\r\n};\r\nwindow._show_pc_confirmation = function(id, header, detail, show, email) {\r\n    var form = document.getElementById('_form_' + id + '_'), pc_confirmation = form.querySelector('._form-pc-confirmation');\r\n    if (pc_confirmation.style.display === 'none') {\r\n        form.querySelector('._form-content').style.display = 'none';\r\n        pc_confirmation.innerHTML = \"<div class='_form-title'>\" + header + \"<\/div>\" + \"<p>\" + detail + \"<\/p>\" +\r\n        \"<button class='_submit' id='hideButton'>Voorkeuren beheren<\/button>\";\r\n        pc_confirmation.style.display = 'block';\r\n        var mp = document.querySelector('input[name=\"mp\"]');\r\n        mp.value = '0';\r\n    } else {\r\n        form.querySelector('._form-content').style.display = 'inline';\r\n        pc_confirmation.style.display = 'none';\r\n    }\r\n\r\n    var hideButton = document.getElementById('hideButton');\r\n    \/\/ Add event listener to the button\r\n    hideButton.addEventListener('click', function() {\r\n        var submitButton = document.querySelector('#_form_77_submit');\r\n        submitButton.disabled = false;\r\n        submitButton.classList.remove('processing');\r\n        var mp = document.querySelector('input[name=\"mp\"]');\r\n        mp.value = '1';\r\n        const cacheBuster = new URL(window.location.href);\r\n        cacheBuster.searchParams.set('v', new Date().getTime());\r\n        window.location.href = cacheBuster.toString();\r\n    });\r\n\r\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\r\n    var visitorObject = window[vgoAlias];\r\n    if (email && typeof visitorObject !== 'undefined') {\r\n        visitorObject('setEmail', email);\r\n        visitorObject('update');\r\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\r\n        \/\/ Site tracking URL to use after inline form submission.\r\n        _load_script(trackcmp_url);\r\n    }\r\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\r\n};\r\nwindow._load_script = function(url, callback, isSubmit) {\r\n    var head = document.querySelector('head'), script = document.createElement('script'), r = false;\r\n    var submitButton = document.querySelector('#_form_77_submit');\r\n    script.charset = 'utf-8';\r\n    script.src = url;\r\n    if (callback) {\r\n        script.onload = script.onreadystatechange = function() {\r\n            if (!r && (!this.readyState || this.readyState == 'complete')) {\r\n                r = true;\r\n                callback();\r\n            }\r\n        };\r\n    }\r\n    script.onerror = function() {\r\n        if (isSubmit) {\r\n            if (script.src.length > 10000) {\r\n                _show_error(\"77\", \"Sorry, je inzending is mislukt. Kort je antwoorden en probeer het opnieuw.\");\r\n            } else {\r\n                _show_error(\"77\", \"Sorry, je inzending is mislukt. Probeer het opnieuw.\");\r\n            }\r\n            submitButton.disabled = false;\r\n            submitButton.classList.remove('processing');\r\n        }\r\n    }\r\n\r\n    head.appendChild(script);\r\n};\r\n(function() {\r\n    var iti;\r\n    if (window.location.search.search(\"excludeform\") !== -1) return false;\r\n    var getCookie = function(name) {\r\n        var match = document.cookie.match(new RegExp('(^|; )' + name + '=([^;]+)'));\r\n        return match ? match[2] : localStorage.getItem(name);\r\n    }\r\n    var setCookie = function(name, value) {\r\n        var now = new Date();\r\n        var time = now.getTime();\r\n        var expireTime = time + 1000 * 60 * 60 * 24 * 365;\r\n        now.setTime(expireTime);\r\n        document.cookie = name + '=' + value + '; expires=' + now + ';path=\/; Secure; SameSite=Lax;';\r\n        localStorage.setItem(name, value);\r\n    }\r\n    var addEvent = function(element, event, func) {\r\n        if (element.addEventListener) {\r\n            element.addEventListener(event, func);\r\n        } else {\r\n            var oldFunc = element['on' + event];\r\n            element['on' + event] = function() {\r\n                oldFunc.apply(this, arguments);\r\n                func.apply(this, arguments);\r\n            };\r\n        }\r\n    }\r\n    var _removed = false;\r\n        var form_to_submit = document.getElementById('_form_77_');\r\n    var allInputs = form_to_submit.querySelectorAll('input, select, textarea'), tooltips = [], submitted = false;\r\n\r\n    var getUrlParam = function(name) {\r\n        if (name.toLowerCase() !== 'email') {\r\n            var params = new URLSearchParams(window.location.search);\r\n            return params.get(name) || false;\r\n        }\r\n        \/\/ email is a special case because a plus is valid in the email address\r\n        var qString = window.location.search;\r\n        if (!qString) {\r\n            return false;\r\n        }\r\n        var parameters = qString.substr(1).split('&');\r\n        for (var i = 0; i < parameters.length; i++) {\r\n            var parameter = parameters[i].split('=');\r\n            if (parameter[0].toLowerCase() === 'email') {\r\n                return parameter[1] === undefined ? true : decodeURIComponent(parameter[1]);\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n\r\n    var acctDateFormat = \"%d-%m-%Y\";\r\n    var getNormalizedDate = function(date, acctFormat) {\r\n        var decodedDate = decodeURIComponent(date);\r\n        if (acctFormat && acctFormat.match(\/(%d|%e).*%m\/gi) !== null) {\r\n            return decodedDate.replace(\/(\\d{2}).*(\\d{2}).*(\\d{4})\/g, '$3-$2-$1');\r\n        } else if (Date.parse(decodedDate)) {\r\n            var dateObj = new Date(decodedDate);\r\n            var year = dateObj.getFullYear();\r\n            var month = dateObj.getMonth() + 1;\r\n            var day = dateObj.getDate();\r\n            return `${year}-${month < 10 ? `0${month}` : month}-${day < 10 ? `0${day}` : day}`;\r\n        }\r\n        return false;\r\n    };\r\n\r\n    var getNormalizedTime = function(time) {\r\n        var hour, minutes;\r\n        var decodedTime = decodeURIComponent(time);\r\n        var timeParts = Array.from(decodedTime.matchAll(\/(\\d{1,2}):(\\d{1,2})\\W*([AaPp][Mm])?\/gm))[0];\r\n        if (timeParts[3]) { \/\/ 12 hour format\r\n            var isPM = timeParts[3].toLowerCase() === 'pm';\r\n            if (isPM) {\r\n                hour = parseInt(timeParts[1]) === 12 ? '12' : `${parseInt(timeParts[1]) + 12}`;\r\n            } else {\r\n                hour = parseInt(timeParts[1]) === 12 ? '0' : timeParts[1];\r\n            }\r\n        } else { \/\/ 24 hour format\r\n            hour = timeParts[1];\r\n        }\r\n        var normalizedHour = parseInt(hour) < 10 ? `0${parseInt(hour)}` : hour;\r\n        var minutes = timeParts[2];\r\n        return `${normalizedHour}:${minutes}`;\r\n    };\r\n\r\n    for (var i = 0; i < allInputs.length; i++) {\r\n        var regexStr = \"field\\\\[(\\\\d+)\\\\]\";\r\n        var results = new RegExp(regexStr).exec(allInputs[i].name);\r\n        if (results != undefined) {\r\n            allInputs[i].dataset.name = allInputs[i].name.match(\/\\[time\\]$\/)\r\n                ? `${window.cfields[results[1]]}_time`\r\n                : window.cfields[results[1]];\r\n        } else {\r\n            allInputs[i].dataset.name = allInputs[i].name;\r\n        }\r\n        var fieldVal = getUrlParam(allInputs[i].dataset.name);\r\n\r\n        if (fieldVal) {\r\n            if (allInputs[i].dataset.autofill === \"false\") {\r\n                continue;\r\n            }\r\n            if (allInputs[i].type == \"radio\" || allInputs[i].type == \"checkbox\") {\r\n                if (allInputs[i].value == fieldVal) {\r\n                    allInputs[i].checked = true;\r\n                }\r\n            } else if (allInputs[i].type == \"date\") {\r\n                allInputs[i].value = getNormalizedDate(fieldVal, acctDateFormat);\r\n            } else if (allInputs[i].type == \"time\") {\r\n                allInputs[i].value = getNormalizedTime(fieldVal);\r\n            } else {\r\n                allInputs[i].value = fieldVal;\r\n            }\r\n        }\r\n    }\r\n\r\n    var remove_tooltips = function() {\r\n        for (var i = 0; i < tooltips.length; i++) {\r\n            tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);\r\n        }\r\n        tooltips = [];\r\n    };\r\n    var remove_tooltip = function(elem) {\r\n        for (var i = 0; i < tooltips.length; i++) {\r\n            if (tooltips[i].elem === elem) {\r\n                tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);\r\n                tooltips.splice(i, 1);\r\n                return;\r\n            }\r\n        }\r\n    };\r\n    var create_tooltip = function(elem, text) {\r\n        var tooltip = document.createElement('div'),\r\n            arrow = document.createElement('div'),\r\n            inner = document.createElement('div'), new_tooltip = {};\r\n        tooltip.id = `${elem.id}-error`;\r\n        tooltip.setAttribute('role', 'alert')\r\n        if (elem.type != 'radio' && (elem.type != 'checkbox' || elem.name === 'sms_consent')) {\r\n            tooltip.className = '_error';\r\n            arrow.className = '_error-arrow';\r\n            inner.className = '_error-inner';\r\n            inner.innerHTML = text;\r\n            tooltip.appendChild(arrow);\r\n            tooltip.appendChild(inner);\r\n            elem.parentNode.appendChild(tooltip);\r\n        } else {\r\n            tooltip.className = '_error-inner _no_arrow';\r\n            tooltip.innerHTML = text;\r\n            elem.parentNode.insertBefore(tooltip, elem);\r\n            new_tooltip.no_arrow = true;\r\n        }\r\n        new_tooltip.tip = tooltip;\r\n        new_tooltip.elem = elem;\r\n        tooltips.push(new_tooltip);\r\n        return new_tooltip;\r\n    };\r\n    var resize_tooltip = function(tooltip) {\r\n        var rect = tooltip.elem.getBoundingClientRect();\r\n        var doc = document.documentElement,\r\n            scrollPosition = rect.top - ((window.pageYOffset || doc.scrollTop)  - (doc.clientTop || 0));\r\n        if (scrollPosition < 40) {\r\n            tooltip.tip.className = tooltip.tip.className.replace(\/ ?(_above|_below) ?\/g, '') + ' _below';\r\n        } else {\r\n            tooltip.tip.className = tooltip.tip.className.replace(\/ ?(_above|_below) ?\/g, '') + ' _above';\r\n        }\r\n    };\r\n    var resize_tooltips = function() {\r\n        if (_removed) return;\r\n        for (var i = 0; i < tooltips.length; i++) {\r\n            if (!tooltips[i].no_arrow) resize_tooltip(tooltips[i]);\r\n        }\r\n    };\r\n    var validate_field = function(elem, remove) {\r\n        var tooltip = null, value = elem.value, no_error = true;\r\n        remove ? remove_tooltip(elem) : false;\r\n        elem.removeAttribute('aria-invalid');\r\n        elem.removeAttribute('aria-describedby');\r\n        if (elem.type != 'checkbox') elem.className = elem.className.replace(\/ ?_has_error ?\/g, '');\r\n        if (elem.getAttribute('required') !== null) {\r\n            if (elem.type == 'radio' || (elem.type == 'checkbox' && \/any\/.test(elem.className))) {\r\n                var elems = form_to_submit.elements[elem.name];\r\n                if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length <= 1) {\r\n                    no_error = elem.checked;\r\n                }\r\n                else {\r\n                    no_error = false;\r\n                    for (var i = 0; i < elems.length; i++) {\r\n                        if (elems[i].checked) no_error = true;\r\n                    }\r\n                }\r\n                if (!no_error) {\r\n                    tooltip = create_tooltip(elem, \"Maak a.u.b. een keuze\");\r\n                }\r\n            } else if (elem.type =='checkbox') {\r\n                var elems = form_to_submit.elements[elem.name], found = false, err = [];\r\n                no_error = true;\r\n                for (var i = 0; i < elems.length; i++) {\r\n                    if (elems[i].getAttribute('required') === null) continue;\r\n                    if (!found && elems[i] !== elem) return true;\r\n                    found = true;\r\n                    elems[i].className = elems[i].className.replace(\/ ?_has_error ?\/g, '');\r\n                    if (!elems[i].checked) {\r\n                        no_error = false;\r\n                        elems[i].className = elems[i].className + ' _has_error';\r\n                        err.push(\"Afvinken van %s is vereist\".replace(\"%s\", elems[i].value));\r\n                    }\r\n                }\r\n                if (!no_error) {\r\n                    tooltip = create_tooltip(elem, err.join('<br\/>'));\r\n                }\r\n            } else if (elem.tagName == 'SELECT') {\r\n                var selected = true;\r\n                if (elem.multiple) {\r\n                    selected = false;\r\n                    for (var i = 0; i < elem.options.length; i++) {\r\n                        if (elem.options[i].selected) {\r\n                            selected = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                } else {\r\n                    for (var i = 0; i < elem.options.length; i++) {\r\n                        if (elem.options[i].selected\r\n                            && (!elem.options[i].value\r\n                            || (elem.options[i].value.match(\/\\n\/g)))\r\n                        ) {\r\n                            selected = false;\r\n                        }\r\n                    }\r\n                }\r\n                if (!selected) {\r\n                    elem.className = elem.className + ' _has_error';\r\n                    no_error = false;\r\n                    tooltip = create_tooltip(elem, \"Maak a.u.b. een keuze\");\r\n                }\r\n            } else if (value === undefined || value === null || value === '') {\r\n                elem.className = elem.className + ' _has_error';\r\n                no_error = false;\r\n                tooltip = create_tooltip(elem, \"Dit veld is verplicht.\");\r\n            }\r\n        }\r\n        if (no_error && elem.name == 'email') {\r\n            if (!value.match(\/^[\\+_a-z0-9-'&=]+(\\.[\\+_a-z0-9-']+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$\/i)) {\r\n                elem.className = elem.className + ' _has_error';\r\n                no_error = false;\r\n                tooltip = create_tooltip(elem, \"Voer een geldig e-mailadres in.\");\r\n            }\r\n        }\r\n        if (no_error && (elem.id == 'phone')) {\r\n            if (elem.value.trim() && typeof iti != 'undefined' && !iti.isValidNumber()) {\r\n                elem.className = elem.className + ' _has_error';\r\n                no_error = false;\r\n                tooltip = create_tooltip(elem, \"Voer een geldig telefoonnummer in.\");\r\n            }\r\n        }\r\n        if (no_error && \/date_field\/.test(elem.className)) {\r\n            if (!value.match(\/^\\d\\d\\d\\d-\\d\\d-\\d\\d$\/)) {\r\n                elem.className = elem.className + ' _has_error';\r\n                no_error = false;\r\n                tooltip = create_tooltip(elem, \"Voer een geldige datum in.\");\r\n            }\r\n        }\r\n\r\n        if (no_error && elem.name === 'sms_consent') {\r\n            const showError = !!elem.attributes.required && !elem.checked;\r\n            if (showError) {\r\n                elem.className = elem.className + ' _has_error';\r\n                no_error = false;\r\n                tooltip = create_tooltip(elem, \"Vink dit vakje aan om verder te gaan\");\r\n            } else {\r\n                elem.className = elem.className.replace(\/ ?_has_error ?\/g, '');\r\n            }\r\n        }\r\n        tooltip ? resize_tooltip(tooltip) : false;\r\n        if (!no_error && elem.hasAttribute('id')) {\r\n            elem.setAttribute('aria-invalid', 'true');\r\n            elem.setAttribute('aria-describedby', `${elem.id}-error`);\r\n        }\r\n        return no_error;\r\n    };\r\n    var needs_validate = function(el) {\r\n        if(el.getAttribute('required') !== null){\r\n            return true;\r\n        }\r\n        if((el.name === 'email' || el.id === 'phone' || el.id === 'sms_consent') && el.value !== \"\"){\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    };\r\n    var validate_form = function(e) {\r\n        var err = form_to_submit.querySelector('._form_error'), no_error = true;\r\n        if (!submitted) {\r\n            submitted = true;\r\n            for (var i = 0, len = allInputs.length; i < len; i++) {\r\n                var input = allInputs[i];\r\n                if (needs_validate(input)) {\r\n                    if (input.type == 'text' || input.type == 'number' || input.type == 'time' || input.type == 'tel') {\r\n                        addEvent(input, 'blur', function() {\r\n                            this.value = this.value.trim();\r\n                            validate_field(this, true);\r\n                        });\r\n                        addEvent(input, 'input', function() {\r\n                            validate_field(this, true);\r\n                        });\r\n                    } else if (input.type == 'radio' || input.type == 'checkbox') {\r\n                        (function(el) {\r\n                            function getElementsArray(name){\r\n                                const value =  form_to_submit.elements[name];\r\n                                if (Array.isArray(value)){\r\n                                    return value;\r\n                                }\r\n                                return [value];\r\n                            }\r\n                            var radios = getElementsArray(el.name);\r\n                            for (var i = 0; i < radios.length; i++) {\r\n                                addEvent(radios[i], 'change', function() {\r\n                                    validate_field(el, true);\r\n                                });\r\n                            }\r\n                        })(input);\r\n                    } else if (input.tagName == 'SELECT') {\r\n                        addEvent(input, 'change', function() {\r\n                            validate_field(this, true);\r\n                        });\r\n                    } else if (input.type == 'textarea'){\r\n                        addEvent(input, 'input', function() {\r\n                            validate_field(this, true);\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        remove_tooltips();\r\n        for (var i = 0, len = allInputs.length; i < len; i++) {\r\n            var elem = allInputs[i];\r\n            if (needs_validate(elem)) {\r\n                if (elem.tagName.toLowerCase() !== \"select\") {\r\n                    elem.value = elem.value.trim();\r\n                }\r\n                validate_field(elem) ? true : no_error = false;\r\n            }\r\n        }\r\n        if (!no_error && e) {\r\n            e.preventDefault();\r\n        }\r\n        if (!no_error) {\r\n            const firstFocusableError = form_to_submit.querySelector('._has_error:not([disabled])');\r\n            if (firstFocusableError && typeof firstFocusableError.focus === 'function') {\r\n                firstFocusableError.focus();\r\n            }\r\n        }\r\n        resize_tooltips();\r\n        return no_error;\r\n    };\r\n    addEvent(window, 'resize', resize_tooltips);\r\n    addEvent(window, 'scroll', resize_tooltips);\r\n\r\n    var _form_serialize = function(form){if(!form||form.nodeName!==\"FORM\"){return }var i,j,q=[];for(i=0;i<form.elements.length;i++){if(form.elements[i].name===\"\"){continue}switch(form.elements[i].nodeName){case\"INPUT\":switch(form.elements[i].type){case\"tel\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].previousSibling.querySelector('div.iti__selected-dial-code').innerText)+encodeURIComponent(\" \")+encodeURIComponent(form.elements[i].value));break;case\"text\":case\"number\":case\"date\":case\"time\":case\"hidden\":case\"password\":case\"button\":case\"reset\":case\"submit\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"checkbox\":case\"radio\":if(form.elements[i].checked){q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value))}break;case\"file\":break}break;case\"TEXTAREA\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"SELECT\":switch(form.elements[i].type){case\"select-one\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"select-multiple\":for(j=0;j<form.elements[i].options.length;j++){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case\"BUTTON\":switch(form.elements[i].type){case\"reset\":case\"submit\":case\"button\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break}break}}return q.join(\"&\")};\r\n\r\n    const formSupportsPost = false;\r\n    var form_submit = function(e) {\r\n\r\n        e.preventDefault();\r\n        if (validate_form()) {\r\n            if(form_to_submit.querySelector('input[name=\"phone\"]') && typeof iti != 'undefined') {\r\n                form_to_submit.querySelector('input[name=\"phone\"]').value = iti.getNumber();\r\n            }\r\n            \/\/ use this trick to get the submit button & disable it using plain javascript\r\n            var submitButton = e.target.querySelector('#_form_77_submit');\r\n            submitButton.disabled = true;\r\n            submitButton.classList.add('processing');\r\n                    var serialized = _form_serialize(document.getElementById('_form_77_')).replace(\/%0A\/g, '\\\\n');\r\n            var err = form_to_submit.querySelector('._form_error');\r\n            err ? err.parentNode.removeChild(err) : false;\r\n            async function submitForm() {\r\n                var formData = new FormData();\r\n                const searchParams = new URLSearchParams(serialized);\r\n                searchParams.forEach((value, key) => {\r\n                    if (key !== 'hideButton') {\r\n                        formData.append(key, value);\r\n                    }\r\n                });\r\n                let request = {\r\n                    headers: {\r\n                        \"Accept\": \"application\/json\"\r\n                    },\r\n                    body: formData,\r\n                    method: \"POST\"\r\n                };\r\n\r\n                let pageUrlParams = new URLSearchParams(window.location.search);\r\n                if (pageUrlParams.has('t')) {\r\n                    request.headers.Authorization = 'Bearer ' + pageUrlParams.get('t');\r\n                }\r\n                const response = await fetch('https:\/\/spectades.activehosted.com\/proc.php?jsonp=true', request);\r\n\r\n                return response.json();\r\n            }\r\n            if (formSupportsPost) {\r\n                submitForm().then((data) => {\r\n                    eval(data.js);\r\n                }).catch(() => {\r\n                    _show_error(\"77\", \"Sorry, je inzending is mislukt. Probeer het opnieuw.\");\r\n                });\r\n            } else {\r\n                _load_script('https:\/\/spectades.activehosted.com\/proc.php?' + serialized + '&jsonp=true', null, true);\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    addEvent(form_to_submit, 'submit', form_submit);\r\n})();\r\n\r\n<\/script>\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\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-c35e0bf padded e-flex e-con-boxed e-con e-parent\" data-id=\"c35e0bf\" 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-8dae025 elementor-widget-divider--view-line_icon elementor-view-default elementor-widget-divider--element-align-center elementor-widget elementor-widget-divider\" data-id=\"8dae025\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon elementor-divider__element\">\n\t\t\t\t\t<i aria-hidden=\"true\" class=\"far fa-arrow-alt-circle-down\"><\/i><\/div>\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b435255 elementor-widget elementor-widget-image\" data-id=\"b435255\" 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=\"1672\" height=\"941\" src=\"\/wp-content\/uploads\/SPS-EP-News-NL-1.png\" class=\"attachment-full size-full wp-image-11513\" alt=\"\" srcset=\"https:\/\/www.spie-spectades.com\/wp-content\/uploads\/SPS-EP-News-NL-1.png 1672w, https:\/\/www.spie-spectades.com\/wp-content\/uploads\/SPS-EP-News-NL-1-600x338.png 600w, https:\/\/www.spie-spectades.com\/wp-content\/uploads\/SPS-EP-News-NL-1-1200x675.png 1200w, https:\/\/www.spie-spectades.com\/wp-content\/uploads\/SPS-EP-News-NL-1-768x432.png 768w, https:\/\/www.spie-spectades.com\/wp-content\/uploads\/SPS-EP-News-NL-1-1536x864.png 1536w\" sizes=\"(max-width: 1672px) 100vw, 1672px\" \/>\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 class=\"elementor-element elementor-element-5124829 elementor-widget elementor-widget-text-editor\" data-id=\"5124829\" 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<h2>SPS Employee Planning<\/h2><p><strong>SPS Employee Planning (SPS EP)<\/strong> provides a simple and user-friendly way to efficiently schedule work order activities while offering direct insight into workforce availability and capacity. Through intelligent work schedules and integrated absence management, planners always have an up-to-date overview of available and unavailable resources.<\/p><p>With intuitive <strong>drag-and-drop scheduling<\/strong>, work order activities can be quickly assigned to available employees. Estimated labor hours automatically determine the required duration of each time slot, while advanced filtering and grouping options help planners identify the right qualified resources for every task.<\/p><p>SPS Employee Planning is fully integrated with <strong>Attune EAM<\/strong>. All planning data is stored directly in the standard Attune EAM tables, eliminating the need for intermediate databases or synchronization processes. This creates a seamless connection between planning, execution, and mobile applications used for work order management in the field.<\/p><h3>Interested in SPS Employee Planning?<\/h3><p>Would you like to learn more about SPS Employee Planning or discover how this solution can help optimize your planning processes? Our sales team will be happy to discuss the possibilities, provide a live demonstration, and show how SPS Employee Planning can be implemented within your Attune EAM environment.<\/p><p>Get in touch with us through our contact page or send us a message via our website. We look forward to helping you improve your planning and scheduling processes.<\/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-ed30da3 elementor-widget elementor-widget-video\" data-id=\"ed30da3\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;youtube_url&quot;:&quot;https:\\\/\\\/youtu.be\\\/OD-0MvL1jlM&quot;,&quot;loop&quot;:&quot;yes&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-wrapper elementor-open-inline\">\n\t\t\t<div class=\"elementor-video\"> <div class=\"brlbs-cmpnt-container brlbs-cmpnt-content-blocker brlbs-cmpnt-with-individual-styles\" data-borlabs-cookie-content-blocker-id=\"youtube-content-blocker\" data-borlabs-cookie-content=\"PHNjcmlwdD4KKGZ1bmN0aW9uKCkgewogICAgbGV0IGQgPSBudWxsOwoKICAgIC8vIGlmIHdlIGFyZSBpbiBhIGxvb3AsIHdlIG5lZWQgdG8gc2VsZWN0IHRoZSBjb3JyZWN0IHZpZGVvIGVsZW1lbnQsIHNpbmNlIFdpZGdldCBJRCBvY2N1cnMgbXVsdGlwbGUgdGltZXMgb24gcGFnZQogICAgY29uc3QgZWxlbXNJbkxvb3AgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkaXZbZGF0YS1lbGVtZW50b3ItdHlwZT0ibG9vcC1pdGVtIl0gZGl2LmVsZW1lbnRvci1lbGVtZW50LWVkMzBkYTMnKTsKICAgIGlmIChlbGVtc0luTG9vcC5sZW5ndGggPT09IDEpIHsKICAgICAgICBkID0gZWxlbXNJbkxvb3BbMF07CiAgICB9IGVsc2UgaWYgKGVsZW1zSW5Mb29wLmxlbmd0aCA+IDEpIHsKICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgPT09ICd1bmRlZmluZWQnIHx8IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNvbnN0IHRtcFZpZGVvV2lkZ2V0ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5jbG9zZXN0KCdbZGF0YS13aWRnZXRfdHlwZT0iYnJsYnNfdmlkZW8uZGVmYXVsdCJdJyk7CiAgICAgICAgaWYgKHRtcFZpZGVvV2lkZ2V0KSB7CiAgICAgICAgICAgIGQgPSB0bXBWaWRlb1dpZGdldDsKICAgICAgICB9CiAgICB9CgogICAgaWYgKGQgPT0gbnVsbCkgewogICAgICAgIGQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYuZWxlbWVudG9yLWVsZW1lbnQtZWQzMGRhMycpOwogICAgfQoKICAgIGlmIChkID09IG51bGwpIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBkLmRhdGFzZXQud2lkZ2V0X3R5cGUgPSBkLmRhdGFzZXQud2lkZ2V0X3R5cGUucmVwbGFjZSgnYnJsYnNfJywgJycpOwogICAgZC5kYXRhc2V0LmJybGJzVW5ibG9ja2VkID0gJ3RydWUnOwoKICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gewogICAgICAgIGlmICh0eXBlb2YgZWxlbWVudG9yRnJvbnRlbmQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBlbGVtZW50b3JGcm9udGVuZC5ob29rcyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CiAgICAgICAgICAgIGVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmRvQWN0aW9uKCdmcm9udGVuZC9lbGVtZW50X3JlYWR5L3ZpZGVvLmRlZmF1bHQnLCBqUXVlcnkoZCksIGpRdWVyeSkKICAgICAgICB9CiAgICB9LCAzMCkKfSkoKTsKPC9zY3JpcHQ+\"><div class=\"brlbs-cmpnt-cb-preset-c brlbs-cmpnt-cb-youtube\"> <div class=\"brlbs-cmpnt-cb-thumbnail\" style=\"background-image: url('https:\/\/www.spie-spectades.com\/wp-content\/uploads\/borlabs-cookie\/1\/yt_OD-0MvL1jlM_hqdefault.jpg')\"><\/div> <div class=\"brlbs-cmpnt-cb-main\"> <div class=\"brlbs-cmpnt-cb-play-button\"><\/div> <div class=\"brlbs-cmpnt-cb-content\"> <p class=\"brlbs-cmpnt-cb-description\">You are currently viewing a placeholder content from <strong>YouTube<\/strong>. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.<\/p> <a class=\"brlbs-cmpnt-cb-provider-toggle\" href=\"#\" data-borlabs-cookie-show-provider-information role=\"button\">More Information<\/a> <\/div> <div class=\"brlbs-cmpnt-cb-buttons\"> <a class=\"brlbs-cmpnt-cb-btn\" href=\"#\" data-borlabs-cookie-unblock role=\"button\">Unblock content<\/a> <a class=\"brlbs-cmpnt-cb-btn\" href=\"#\" data-borlabs-cookie-accept-service role=\"button\" style=\"display: inherit\">Accept required service and unblock content<\/a> <\/div> <\/div> <\/div><\/div><\/div>\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0ff8804 elementor-mobile-align-center elementor-widget elementor-widget-button\" data-id=\"0ff8804\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.spie-spectades.com\/en\/solutions\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"robur robur-left\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Back to solutions overview<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Back to solutions overview Achieve cost savings of up to 10% by planning efficiently Effective [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":11177,"parent":5147,"menu_order":5,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-5121","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Spectades Planning &amp; Scheduling WP and EP for Attune EAM | Work and Employee Planning<\/title>\n<meta name=\"description\" content=\"Spectades Planning &amp; Scheduling WP and EP for Attune EAM provides powerful solutions for work planning, workforce scheduling and resource management. Optimize capacity, personnel and work orders with fully integrated add-ons for Attune EAM.\" \/>\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.spie-spectades.com\/en\/solutions\/planning-scheduling\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spectades Planning &amp; Scheduling WP and EP for Attune EAM | Work and Employee Planning\" \/>\n<meta property=\"og:description\" content=\"Spectades Planning &amp; Scheduling WP and EP for Attune EAM provides powerful solutions for work planning, workforce scheduling and resource management. Optimize capacity, personnel and work orders with fully integrated add-ons for Attune EAM.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.spie-spectades.com\/en\/solutions\/planning-scheduling\/\" \/>\n<meta property=\"og:site_name\" content=\"SPECTADES\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-16T13:07:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.spie-spectades.com\/wp-content\/uploads\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1672\" \/>\n\t<meta property=\"og:image:height\" content=\"941\" \/>\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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/solutions\\\/planning-scheduling\\\/\",\"url\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/solutions\\\/planning-scheduling\\\/\",\"name\":\"Spectades Planning & Scheduling WP and EP for Attune EAM | Work and Employee Planning\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/solutions\\\/planning-scheduling\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/solutions\\\/planning-scheduling\\\/#primaryimage\"},\"thumbnailUrl\":\"\\\/wp-content\\\/uploads\\\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution.png\",\"datePublished\":\"2023-11-07T13:12:34+00:00\",\"dateModified\":\"2026-06-16T13:07:13+00:00\",\"description\":\"Spectades Planning & Scheduling WP and EP for Attune EAM provides powerful solutions for work planning, workforce scheduling and resource management. Optimize capacity, personnel and work orders with fully integrated add-ons for Attune EAM.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/solutions\\\/planning-scheduling\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/solutions\\\/planning-scheduling\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/solutions\\\/planning-scheduling\\\/#primaryimage\",\"url\":\"\\\/wp-content\\\/uploads\\\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution.png\",\"contentUrl\":\"\\\/wp-content\\\/uploads\\\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution.png\",\"width\":1672,\"height\":941},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/solutions\\\/planning-scheduling\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Solutions\",\"item\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/loesungen\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Planning &amp; Scheduling\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/\",\"name\":\"SPECTADES\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.spie-spectades.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spectades Planning & Scheduling WP and EP for Attune EAM | Work and Employee Planning","description":"Spectades Planning & Scheduling WP and EP for Attune EAM provides powerful solutions for work planning, workforce scheduling and resource management. Optimize capacity, personnel and work orders with fully integrated add-ons for Attune EAM.","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.spie-spectades.com\/en\/solutions\/planning-scheduling\/","og_locale":"en_US","og_type":"article","og_title":"Spectades Planning & Scheduling WP and EP for Attune EAM | Work and Employee Planning","og_description":"Spectades Planning & Scheduling WP and EP for Attune EAM provides powerful solutions for work planning, workforce scheduling and resource management. Optimize capacity, personnel and work orders with fully integrated add-ons for Attune EAM.","og_url":"https:\/\/www.spie-spectades.com\/en\/solutions\/planning-scheduling\/","og_site_name":"SPECTADES","article_modified_time":"2026-06-16T13:07:13+00:00","og_image":[{"width":1672,"height":941,"url":"https:\/\/www.spie-spectades.com\/wp-content\/uploads\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.spie-spectades.com\/en\/solutions\/planning-scheduling\/","url":"https:\/\/www.spie-spectades.com\/en\/solutions\/planning-scheduling\/","name":"Spectades Planning & Scheduling WP and EP for Attune EAM | Work and Employee Planning","isPartOf":{"@id":"https:\/\/www.spie-spectades.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.spie-spectades.com\/en\/solutions\/planning-scheduling\/#primaryimage"},"image":{"@id":"https:\/\/www.spie-spectades.com\/en\/solutions\/planning-scheduling\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution.png","datePublished":"2023-11-07T13:12:34+00:00","dateModified":"2026-06-16T13:07:13+00:00","description":"Spectades Planning & Scheduling WP and EP for Attune EAM provides powerful solutions for work planning, workforce scheduling and resource management. Optimize capacity, personnel and work orders with fully integrated add-ons for Attune EAM.","breadcrumb":{"@id":"https:\/\/www.spie-spectades.com\/en\/solutions\/planning-scheduling\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.spie-spectades.com\/en\/solutions\/planning-scheduling\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.spie-spectades.com\/en\/solutions\/planning-scheduling\/#primaryimage","url":"\/wp-content\/uploads\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution.png","contentUrl":"\/wp-content\/uploads\/Spectades-Planning-and-Scheduling-Octave-EAM-Solution.png","width":1672,"height":941},{"@type":"BreadcrumbList","@id":"https:\/\/www.spie-spectades.com\/en\/solutions\/planning-scheduling\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.spie-spectades.com\/en\/"},{"@type":"ListItem","position":2,"name":"Solutions","item":"https:\/\/www.spie-spectades.com\/en\/loesungen\/"},{"@type":"ListItem","position":3,"name":"Planning &amp; Scheduling"}]},{"@type":"WebSite","@id":"https:\/\/www.spie-spectades.com\/en\/#website","url":"https:\/\/www.spie-spectades.com\/en\/","name":"SPECTADES","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.spie-spectades.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/www.spie-spectades.com\/en\/wp-json\/wp\/v2\/pages\/5121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.spie-spectades.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.spie-spectades.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.spie-spectades.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.spie-spectades.com\/en\/wp-json\/wp\/v2\/comments?post=5121"}],"version-history":[{"count":10,"href":"https:\/\/www.spie-spectades.com\/en\/wp-json\/wp\/v2\/pages\/5121\/revisions"}],"predecessor-version":[{"id":11651,"href":"https:\/\/www.spie-spectades.com\/en\/wp-json\/wp\/v2\/pages\/5121\/revisions\/11651"}],"up":[{"embeddable":true,"href":"https:\/\/www.spie-spectades.com\/en\/wp-json\/wp\/v2\/pages\/5147"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.spie-spectades.com\/en\/wp-json\/wp\/v2\/media\/11177"}],"wp:attachment":[{"href":"https:\/\/www.spie-spectades.com\/en\/wp-json\/wp\/v2\/media?parent=5121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}