{"id":12314,"date":"2026-10-01T10:12:16","date_gmt":"2026-10-01T09:12:16","guid":{"rendered":"https:\/\/help.cirrus-shield.com\/?post_type=docs&#038;p=12314"},"modified":"2026-10-01T10:12:16","modified_gmt":"2026-10-01T09:12:16","slug":"scheduler-admin-guide","status":"publish","type":"docs","link":"https:\/\/help.cirrus-shield.com\/en\/docs\/admin-guide\/scheduler-admin-guide\/","title":{"rendered":"Scheduler Admin Guide"},"content":{"rendered":"\n<h2 class=\"wp-block-heading has-luminous-vivid-amber-color has-text-color has-link-color wp-elements-1\">Scheduler Overview<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This guide shows you how to configure and use the Cirrus Shield Scheduler application to efficiently plan your missions in relation to your resources and locations.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-luminous-vivid-amber-color has-text-color has-link-color wp-elements-2\">Initial Scheduler Configuration<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n\n<li>Go to <strong>Setup<\/strong>, then to the <strong>Connected Apps<\/strong> tab and make sure the Scheduler application is listed there.<\/li>\n\n\n<li>Go to the <strong>Extensions<\/strong> tab and check that the Scheduler extension is present.<\/li>\n\n\n<li>If the extension is not present, download it by clicking the <strong>plus<\/strong> icon, then selecting it from the list.<\/li>\n\n\n<li>Click <strong>Details<\/strong> for this extension from the list<\/li>\n\n\n<li>A page describing the Scheduler opens.<\/li>\n\n\n<li>Click the <strong>Configure the scheduler<\/strong> button to go to the next step.<\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading has-luminous-vivid-amber-color has-text-color has-link-color wp-elements-3\">Working Hours and Closure Days Configuration<\/h2>\n\n\n\n<ol start=\"7\" class=\"wp-block-list\">\n\n<li>Enter your company&#8217;s working hours for each day of the week.<\/li>\n\n\n<li>Add closure days. These can apply to a single year or repeat every year.<\/li>\n\n\n<li>Then click <strong>Save<\/strong>.<\/li>\n\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image1.png\" alt=\"\" class=\"wp-image-12308\" srcset=\"https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image1.png 1920w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image1-300x169.png 300w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image1-1024x576.png 1024w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image1-768x432.png 768w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image1-1536x864.png 1536w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image1-1080x608.png 1080w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading has-luminous-vivid-amber-color has-text-color has-link-color wp-elements-4\">Object and Field Mapping<\/h2>\n\n\n\n<ol start=\"10\" class=\"wp-block-list\">\n\n<li>Match the objects and fields with the Scheduler.<\/li>\n\n\n<li>If your industry is listed in the mapping template, select it for automatic mapping, provided you have the corresponding objects and fields.<\/li>\n\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image2.png\" alt=\"\" class=\"wp-image-12310\" srcset=\"https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image2.png 1920w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image2-300x169.png 300w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image2-1024x576.png 1024w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image2-768x432.png 768w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image2-1536x864.png 1536w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image2-1080x608.png 1080w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading has-luminous-vivid-amber-color has-text-color has-link-color wp-elements-5\">Cirrus Shield Generic Role Mapping \u2014 AlistonScheduler<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The scheduling engine does not hard-code any object or field name. Each generic role below is mapped once, per organization, in the Mapping step of the \/config wizard. This document describes the generic vocabulary \u2014 never the actual names used by a specific organization.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">How to read a sheet:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cirrus Shield Object \u2014 always chosen manually for each organization; no default value, never a field.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fixed Field \u2014 API name assumed identical across all organizations. Does not appear in the wizard; a correction is made directly in the database if the organization differs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Field to Map \u2014 offered as a dropdown in the wizard; the administrator selects their organization&#8217;s actual field.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">01 \u2014 Service (GenericRole.Service)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The offer or product a Mission is linked to \u2014 used to filter which Resources are qualified via a Skill.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cirrus Shield Object to choose \u2014 required.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fixed Fields<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Cirrus Shield API<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Nom<\/td>\n<td>Name<\/td>\n<td>Displayed name of the Service.<\/td>\n<\/tr>\n<tr>\n<td>CodeProduit<\/td>\n<td>Product_Code<\/td>\n<td>Internal product\/offer code, used as a readable identifier.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fields to Map<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>(none)<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">02 \u2014 Resource (GenericRole.Resource)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The person, room, or equipment being scheduled \u2014 the one who occupies a Slot.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cirrus Shield Object to choose \u2014 required.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fixed Fields<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Cirrus Shield API<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Nom<\/td>\n<td>Name<\/td>\n<td>Displayed name of the Resource in the calendar and selectors.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fields to Map<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>(none)<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">03 \u2014 Skill (GenericRole.Skill) \u2014 Optional<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The N:N Resource\u2194\ufe0eService link \u2014 which Resources are qualified for which Service. If not mapped, no skill restriction is applied.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cirrus Shield Object to choose \u2014 junction object (e.g. Competence).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fixed Fields<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Cirrus Shield API<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Nom<\/td>\n<td>Name<\/td>\n<td>Name of the link itself (rarely displayed).<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fields to Map<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>ResourceId<\/td>\n<td>Lookup to the Resource that holds the skill.<\/td>\n<\/tr>\n<tr>\n<td>ServiceId<\/td>\n<td>Lookup to the Service covered by this skill.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">04 \u2014 Mission (GenericRole.Mission)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The item being scheduled \u2014 a job site, a training session, an event\u2026 depending on the organization&#8217;s business. Carries its own date bounds and its scheduling iframe within Cirrus Shield.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cirrus Shield Object to choose \u2014 required.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fixed Fields<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Cirrus Shield API<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Nom<\/td>\n<td>Name<\/td>\n<td>Displayed name of the Mission.<\/td>\n<\/tr>\n<tr>\n<td>DateDebut<\/td>\n<td>Date_de_debut<\/td>\n<td>First valid day for a Slot of this Mission.<\/td>\n<\/tr>\n<tr>\n<td>DateFin<\/td>\n<td>Date_de_fin<\/td>\n<td>Last valid day \u2014 compared against the organization&#8217;s local timezone, never against the raw UTC instant.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fields to Map<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>ServiceId<\/td>\n<td>Lookup to the Mission&#8217;s Service (may require a second hop if the Lookup does not point to it directly).<\/td>\n<\/tr>\n<tr>\n<td>LocationId<\/td>\n<td>Default Location of the Mission. Rule: at least one of Mission.LocationId or Slot.LocationId must be mapped.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">05 \u2014 Slot (GenericRole.Unit)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The time slot itself \u2014 a scheduled intervention by a Resource, at a Location, as part of a Mission. The same object also represents an Absence (see the Type field).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cirrus Shield Object to choose \u2014 required.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fixed Fields<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Cirrus Shield API<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Nom<\/td>\n<td>Name<\/td>\n<td>Slot name \u2014 auto-generated if left blank.<\/td>\n<\/tr>\n<tr>\n<td>Date<\/td>\n<td>Date<\/td>\n<td>Day of the Slot. On some organizations this field reflects the full timestamp rather than a normalized midnight \u2014 always re-normalize before comparing.<\/td>\n<\/tr>\n<tr>\n<td>HeureDebut<\/td>\n<td>Date_de_debut<\/td>\n<td>UTC start timestamp.<\/td>\n<\/tr>\n<tr>\n<td>HeureFin<\/td>\n<td>Date_de_fin<\/td>\n<td>UTC end timestamp.<\/td>\n<\/tr>\n<tr>\n<td>Type<\/td>\n<td>Type<\/td>\n<td>Distinguishes Work \/ Absence \u2014 replaces the old separate generic role Unavailability (deprecated).<\/td>\n<\/tr>\n<tr>\n<td>SerieId<\/td>\n<td>Serie_Id<\/td>\n<td>Field inherited from the native CS panel. Not read by current code \u2014 series membership is now managed solely on the application side (local SeriesUnit table).<\/td>\n<\/tr>\n<tr>\n<td>DetacheDeLaSerie<\/td>\n<td>Detache_de_la_serie<\/td>\n<td>Legacy field, kept only for compatibility. Never read by current code, for any purpose.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fields to Map<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>ResourceId<\/td>\n<td>Lookup to the Resource assigned to this Slot.<\/td>\n<\/tr>\n<tr>\n<td>MissionId<\/td>\n<td>Lookup to this Slot&#8217;s Mission.<\/td>\n<\/tr>\n<tr>\n<td>LocationId (optional)<\/td>\n<td>Explicit Location for this Slot, if different from the Mission&#8217;s default Location.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Not exposed in the wizard:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The &#8220;training mode&#8221; fields \u2014 PauseDebut, PauseFin, Matin, ApresMidi (half-days) \u2014 exist in the generic Slot model but are not yet offered in the Mapping step. For an organization that needs them today, they must be inserted directly into the FieldMapping table \u2014 a known limitation of the wizard, not a deliberate choice as with a fixed field.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">06 \u2014 Mission Resources (GenericRole.MissionResource) \u2014 Optional<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Mission\u2194\ufe0eResource junction, for organizations that already have an object of this type (e.g. a &#8220;Course&#8221; object linking Session and Instructor). When this role is mapped, it entirely replaces the default automatic synchronization.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cirrus Shield Object to choose \u2014 leave unmapped if the organization has no dedicated junction object.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fixed Fields<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Cirrus Shield API<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>(none)<\/td>\n<td>\u2014<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fields to Map<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>MissionId<\/td>\n<td>Lookup to the relevant Mission.<\/td>\n<\/tr>\n<tr>\n<td>ResourceId<\/td>\n<td>Lookup to the Resource attached to the Mission.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">07 \u2014 Resources Authorized at Location (GenericRole.LocationResource) \u2014 Optional<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Location\u2194\ufe0eResource junction \u2014 restricts which Resources can be scheduled at which Location. If not mapped, this restriction is simply disabled for the organization, with no fallback to another mechanism.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cirrus Shield Object to choose \u2014 leave unmapped if the organization does not restrict Resources by Location.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fixed Fields<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Cirrus Shield API<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>(none)<\/td>\n<td>\u2014<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fields to Map<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>LocationId<\/td>\n<td>Lookup to the Location subject to the restriction.<\/td>\n<\/tr>\n<tr>\n<td>ResourceId<\/td>\n<td>Lookup to the Resource authorized at this Location.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">08 \u2014 Location (GenericRole.Location)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The place where a Slot takes place \u2014 a room, a job site, an address.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cirrus Shield Object to choose \u2014 required.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fixed Fields<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Cirrus Shield API<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Nom<\/td>\n<td>Name<\/td>\n<td>Displayed name of the Location.<\/td>\n<\/tr>\n<tr>\n<td>AllowConflict<\/td>\n<td>Allow_Conflict<\/td>\n<td>Checkbox: takes this Location outside the application&#8217;s scheduling control \u2014 removes only the Location double-booking alert, never the other rules. Actual CS wiring format not yet confirmed on a production organization.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fields to Map<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Generic Field<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DescriptionFields (optional)<\/td>\n<td>List of CS fields to concatenate as a description in the Location selector (e.g. City, Postal Code, Address). Multi-select \u2014 stored as a comma-separated list of API names, not a simple Lookup.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading has-luminous-vivid-amber-color has-text-color has-link-color wp-elements-6\">Adding Buttons to the Resource and Mission Pages<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Resource<\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n\n<li>Go to <strong>Setup<\/strong> \u2192 <strong>Objects<\/strong>.<\/li>\n\n\n<li>Click the object that represents the resources in your organization.<\/li>\n\n\n<li>Click <strong>Details<\/strong> for the object, then open the <strong>Custom Buttons<\/strong> tab.<\/li>\n\n\n<li>Click the create button to add a new button.<\/li>\n\n\n<li>Configure the button using the following settings:<\/li>\n\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1096\" height=\"727\" src=\"https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image3.png\" alt=\"\" class=\"wp-image-12312\" srcset=\"https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image3.png 1096w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image3-300x199.png 300w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image3-1024x679.png 1024w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image3-768x509.png 768w, https:\/\/help.cirrus-shield.com\/wp-content\/uploads\/2026\/10\/planificateur-image3-1080x716.png 1080w\" sizes=\"(max-width: 1096px) 100vw, 1096px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Copy and paste the following JavaScript code into the code section (the code is identical regardless of language):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function OpenPlan() {\n  var RecordID = GetRecordGUID();\n  var modelName = window.location.search.slice(1).split(\"&\")[0].split(\"=\")[1];\n  var userinfo = GetCurrentloggedInUserInfo();\n  var orgInfo = GetOrganizationIDForAllUsers();\n  openPopup();\n  function openPopup() {\n    var popup = createPopup();\n    document.body.appendChild(popup);\n    var popupContent = createPopupContent();\n    popup.appendChild(popupContent);\n    var closeBtn = createCloseButton(popup);\n    popupContent.appendChild(closeBtn);\n    var loadingSpinner = createLoadingSpinner();\n    popupContent.appendChild(loadingSpinner);\n    var iframe = createIframe(RecordID, modelName, userinfo, loadingSpinner, orgInfo);\n    popupContent.appendChild(iframe);\n  }\n  function createPopup() {\n    var popup = document.createElement(\"div\");\n    popup.id = \"myPopupPlanificateur\";\n    popup.style.cssText = \"position: fixed; z-index: 9999999; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 100%; height: 100%; overflow: auto; background-color: rgba(0,0,0,0.4); display: flex; justify-content: center; align-items: center;\";\n    return popup;\n  }\n  function createPopupContent() {\n    var popupContent = document.createElement(\"div\");\n    popupContent.id = \"popupContentPlanificateur\";\n    popupContent.style.cssText = \"background-color: white; padding: 0px; border: 1px solid #888; border-radius: 16px; width: 95%; height: 100%; position: relative; box-shadow: 0 8px 30px rgba(0,0,0,0.25); overflow: hidden;\";\n    return popupContent;\n  }\n  function createCloseButton(popup) {\n    var closeBtn = document.createElement(\"span\");\n    closeBtn.innerHTML = \"&times;\";\n    closeBtn.style.cssText = \"position: absolute; top: 8px; right: 16px; font-size: 28px; font-weight: bold; cursor: pointer; z-index: 10;\";\n    closeBtn.onclick = function () {\n      popup.style.display = \"none\";\n      location.reload(true);\n    };\n    return closeBtn;\n  }\n  function createLoadingSpinner() {\n    var loadingSpinner = document.createElement(\"div\");\n    loadingSpinner.id = \"loadingSpinnerPlanificateur\";\n    loadingSpinner.style.cssText = \"position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);\";\n    loadingSpinner.innerHTML = '';\n    var style = document.createElement(\"style\");\n    style.textContent = `\n    #loadingSpinnerPlanificateur .spinner {\n      border: 4px solid rgba(0, 0, 0, 0.1);\n      border-left: 4px solid #3498db;\n      border-radius: 50%;\n      width: 40px;\n      height: 40px;\n      animation: spin 1s linear infinite;\n    }\n    @keyframes spin {\n      0% { transform: rotate(0deg); }\n      100% { transform: rotate(360deg); }\n    }\n    `;\n    loadingSpinner.appendChild(style);\n    return loadingSpinner;\n  }\n  function createIframe(RecordID, modelName, userinfo, loadingSpinner, orgInfo) {\n    var iframe = document.createElement(\"iframe\");\n    loadingSpinner.style.display = \"block\";\n    iframe.addEventListener(\"load\", function () {\n      loadingSpinner.style.display = \"none\";\n    });\n    iframe.src = `https:\/\/planificateur.cirrus-shield.net\/${userinfo[\"Language\"]}\/planificateur-ressource?orgId=${orgInfo}&resourceId=${RecordID}&TimeZoneSidKey=${userinfo[\"TimeZoneSidKey\"]}&LocaleSidKey=${userinfo[\"LocaleSidKey\"]}`;\n    iframe.style.cssText = \"width: 100%; height: 100%; border: none; border-radius: 0 0 12px 12px;\";\n    return iframe;\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Don&#8217;t forget to set the profiles that have access to this button: click the <strong>Profiles<\/strong> tab, then the edit button (blue pencil).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mission<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Do the same for the object that represents the mission in your environment, using this JavaScript code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function OpenPlan() {\n  var RecordID = GetRecordGUID();\n  var modelName = window.location.search.slice(1).split(\"&\")[0].split(\"=\")[1];\n  var userinfo = GetCurrentloggedInUserInfo();\n  var orgInfo = GetOrganizationIDForAllUsers();\n  openPopup();\n  function openPopup() {\n    var popup = createPopup();\n    document.body.appendChild(popup);\n    var popupContent = createPopupContent();\n    popup.appendChild(popupContent);\n    var closeBtn = createCloseButton(popup);\n    popupContent.appendChild(closeBtn);\n    var loadingSpinner = createLoadingSpinner();\n    popupContent.appendChild(loadingSpinner);\n    var iframe = createIframe(RecordID, modelName, userinfo, loadingSpinner, orgInfo);\n    popupContent.appendChild(iframe);\n  }\n  function createPopup() {\n    var popup = document.createElement(\"div\");\n    popup.id = \"myPopupPlanificateur\";\n    popup.style.cssText = \"position: fixed; z-index: 9999999; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 100%; height: 100%; overflow: auto; background-color: rgba(0,0,0,0.4); display: flex; justify-content: center; align-items: center;\";\n    return popup;\n  }\n  function createPopupContent() {\n    var popupContent = document.createElement(\"div\");\n    popupContent.id = \"popupContentPlanificateur\";\n    popupContent.style.cssText = \"background-color: white; padding: 0px; border: 1px solid #888; border-radius: 16px; width: 95%; height: 100%; position: relative; box-shadow: 0 8px 30px rgba(0,0,0,0.25); overflow: hidden;\";\n    return popupContent;\n  }\n  function createCloseButton(popup) {\n    var closeBtn = document.createElement(\"span\");\n    closeBtn.innerHTML = \"&times;\";\n    closeBtn.style.cssText = \"position: absolute; top: 8px; right: 16px; font-size: 28px; font-weight: bold; cursor: pointer; z-index: 10;\";\n    closeBtn.onclick = function () {\n      popup.style.display = \"none\";\n      location.reload(true);\n    };\n    return closeBtn;\n  }\n  function createLoadingSpinner() {\n    var loadingSpinner = document.createElement(\"div\");\n    loadingSpinner.id = \"loadingSpinnerPlanificateur\";\n    loadingSpinner.style.cssText = \"position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);\";\n    loadingSpinner.innerHTML = '';\n    var style = document.createElement(\"style\");\n    style.textContent = `\n    #loadingSpinnerPlanificateur .spinner {\n      border: 4px solid rgba(0, 0, 0, 0.1);\n      border-left: 4px solid #3498db;\n      border-radius: 50%;\n      width: 40px;\n      height: 40px;\n      animation: spin 1s linear infinite;\n    }\n    @keyframes spin {\n      0% { transform: rotate(0deg); }\n      100% { transform: rotate(360deg); }\n    }\n    `;\n    loadingSpinner.appendChild(style);\n    return loadingSpinner;\n  }\n  function createIframe(RecordID, modelName, userinfo, loadingSpinner, orgInfo) {\n    var iframe = document.createElement(\"iframe\");\n    loadingSpinner.style.display = \"block\";\n    iframe.addEventListener(\"load\", function () {\n      loadingSpinner.style.display = \"none\";\n    });\n    iframe.src = `https:\/\/planificateur.cirrus-shield.net\/${userinfo[\"Language\"]}\/planificateur?orgId=${orgInfo}&missionId=${RecordID}&TimeZoneSidKey=${userinfo[\"TimeZoneSidKey\"]}&LocaleSidKey=${userinfo[\"LocaleSidKey\"]}`;\n    iframe.style.cssText = \"width: 100%; height: 100%; border: none; border-radius: 0 0 12px 12px;\";\n    return iframe;\n  }\n}<\/code><\/pre>\n","protected":false},"author":18,"featured_media":0,"parent":132,"menu_order":13,"comment_status":"open","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","_is_vendor_doc":"0","footnotes":""},"doc_tag":[],"class_list":["post-12314","docs","type-docs","status-publish","hentry"],"comment_count":0,"_links":{"self":[{"href":"https:\/\/help.cirrus-shield.com\/en\/wp-json\/wp\/v2\/docs\/12314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/help.cirrus-shield.com\/en\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/help.cirrus-shield.com\/en\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/help.cirrus-shield.com\/en\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/help.cirrus-shield.com\/en\/wp-json\/wp\/v2\/comments?post=12314"}],"version-history":[{"count":4,"href":"https:\/\/help.cirrus-shield.com\/en\/wp-json\/wp\/v2\/docs\/12314\/revisions"}],"predecessor-version":[{"id":12324,"href":"https:\/\/help.cirrus-shield.com\/en\/wp-json\/wp\/v2\/docs\/12314\/revisions\/12324"}],"up":[{"embeddable":true,"href":"https:\/\/help.cirrus-shield.com\/en\/wp-json\/wp\/v2\/docs\/132"}],"prev":[{"title":"Facturation electronique B2B","link":"https:\/\/help.cirrus-shield.com\/en\/docs\/admin-guide\/facturation-electronique-b2b\/","href":"https:\/\/help.cirrus-shield.com\/en\/wp-json\/wp\/v2\/docs\/12099"}],"wp:attachment":[{"href":"https:\/\/help.cirrus-shield.com\/en\/wp-json\/wp\/v2\/media?parent=12314"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/help.cirrus-shield.com\/en\/wp-json\/wp\/v2\/doc_tag?post=12314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}