{"id":8446,"date":"2026-01-19T15:42:24","date_gmt":"2026-01-19T15:42:24","guid":{"rendered":""},"modified":"2026-04-09T13:55:00","modified_gmt":"2026-04-09T13:55:00","slug":"licensing-school-toolbox","status":"publish","type":"lessons","link":"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/","title":{"rendered":"Licensing School Toolbox"},"content":{"rendered":"\n<p>Welcome to the Licensing School Toolbox. This collection of interactive tools takes your licensing life to a new level of ease.<\/p>\n\n\n\n<div id=\"lv-dynamic-toolbox\" style=\"font-family: 'Segoe UI', Arial, sans-serif; width: calc(100% + 100px); max-width: 750px; margin-left: 0; color: #444; line-height: 1.4;\">\n    <!-- Font Awesome -->\n    <link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\" rel=\"stylesheet\">\n\n    <style>\n        #lv-dynamic-toolbox { \n            --primary: #9ACA3C; \n            --primary-dark: #88b335; \n            --primary-light: #f9fbf4;\n            --text-grey: #707070; \n            --btn-grey: #e9ecef;\n            --shadow: 0 2px 5px rgba(0,0,0,0.08);\n        }\n\n        \/* Search and Filter Area - Single Row *\/\n        .lv-controls { \n            margin-bottom: 20px; \n            display: flex; \n            align-items: center; \n            gap: 15px; \n            flex-wrap: nowrap; \n            padding-bottom: 15px;\n            border-bottom: 1px solid #eee;\n        }\n        \n        .lv-search-container { \n            position: relative; \n            width: 250px; \n            flex-shrink: 0;\n        }\n        #lv-tool-search { \n            width: 100%; padding: 10px 40px 10px 15px; font-size: 0.9rem; border: 1px solid #ced4da; \n            border-radius: 6px; outline: none; transition: border 0.2s; color: #495057;\n            background-color: #ffffff !important; \n        }\n        #lv-tool-search:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(154, 202, 60, 0.1); }\n        \n        \/* Placeholder Styling *\/\n        #lv-tool-search::placeholder {\n            color: #bbb;\n            font-style: italic;\n            opacity: 1;\n        }\n\n        \/* X Button Integrated into Search Box *\/\n        .lv-search-clear { \n            position: absolute; right: 12px; top: 50%; transform: translateY(-50%);\n            color: #ccc; cursor: pointer; display: block; font-size: 1.1rem; \n            transition: color 0.2s;\n            z-index: 2;\n        }\n        .lv-search-clear:hover { color: #888; }\n\n        \/* Filter Capsules *\/\n        .lv-capsule-container { display: flex; flex-wrap: nowrap; gap: 8px; align-items: center; }\n        .lv-capsule { \n            padding: 6px 16px; \n            border-radius: 20px; \n            background: #fff; \n            font-size: 0.8rem; \n            font-weight: 600; \n            cursor: pointer; \n            transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); \n            color: #555; \n            border: 1px solid #e0e0e0;\n            box-shadow: var(--shadow);\n            white-space: nowrap;\n        }\n        .lv-capsule:hover { \n            border-color: var(--primary); \n            color: var(--primary);\n            transform: translateY(-1px);\n        }\n        .lv-capsule.active { \n            background: var(--primary); \n            color: white; \n            border-color: var(--primary);\n            box-shadow: 0 3px 8px rgba(154, 202, 60, 0.3);\n        }\n\n        \/* Headers and Rows *\/\n        .lv-category-title { \n            font-size: 0.85rem; \n            color: var(--primary); font-weight: 700;\n            padding: 25px 0 8px 0; \n            text-transform: uppercase; letter-spacing: 0.5px;\n        }\n        #lv-contents-target > div:first-child .lv-category-title {\n            padding-top: 5px;\n        }\n\n        .lv-tool-row { \n            display: grid; \n            grid-template-columns: 220px 1fr 220px; \n            align-items: center; \n            padding: 12px 10px; \n            border-bottom: 1px solid #f2f2f2; \n            gap: 20px;\n            transition: background 0.2s;\n        }\n        .lv-tool-row:hover { background-color: #fafafa; }\n        \n        .lv-tool-row.lv-header { \n            background: #f8f9fa; color: #adb5bd; font-size: 0.7rem; \n            font-weight: 700; text-transform: uppercase; border-bottom: none;\n            padding: 6px 10px;\n        }\n\n        \/* Tool Name Wrapping *\/\n        .lv-tool-name-combined { display: flex; align-items: center; gap: 12px; }\n        .lv-tool-text { \n            font-weight: 600; \n            font-size: 0.85rem; \n            color: #2d3436; \n            line-height: 1.2;\n            max-width: 145px; \n            word-wrap: break-word;\n        }\n        \n        \/* Icon Hover Animation *\/\n        .tool-icon { \n            color: var(--primary); \n            font-size: 1.85rem; \n            min-width: 45px; \n            text-align: center; \n            transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); \n        }\n        .lv-tool-row:hover .tool-icon { \n            transform: scale(1.2) rotate(8deg); \n            color: var(--primary-dark);\n        }\n\n        \/* Action Buttons *\/\n        .lv-action-box { display: flex; flex-direction: row; gap: 4px; width: 100%; }\n        .lv-btn { \n            flex: 1;\n            padding: 8px 0; \n            border-radius: 2px; \n            text-align: center; font-size: 0.75rem; \n            font-weight: 600; text-decoration: none !important; cursor: pointer; transition: all 0.2s; \n            border: none; display: flex; align-items: center; justify-content: center; gap: 4px;\n        }\n        .lv-btn-launch { background: var(--primary); color: white !important; }\n        .lv-btn-launch:hover { background: var(--primary-dark); }\n        .lv-btn-more { background: var(--btn-grey); color: #444 !important; }\n        .lv-btn-more:hover { background: #dee2e6; }\n\n        \/* Details View *\/\n        #lv-detail-view { display: none; margin-top: 20px; }\n        .lv-detail-card { \n            border: 1px solid #eee; border-radius: 12px; background: #fff; \n            box-shadow: 0 10px 30px rgba(0,0,0,0.05); overflow: hidden;\n        }\n        .lv-modal-header {\n            display: flex; justify-content: space-between; align-items: center;\n            padding: 20px 25px; border-bottom: 1px solid #eee;\n        }\n        .lv-modal-header-actions { display: flex; gap: 10px; }\n        \n        .lv-detail-body { padding: 25px 30px; font-size: 1rem; }\n        .lv-detail-body ul li { margin-bottom: 15px; } \n        .lv-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; margin-bottom: 30px; }\n        .lv-label { color: var(--primary); font-weight: 700; text-transform: uppercase; font-size: 0.75rem; margin-bottom: 8px; display: block; }\n\n        @media (max-width: 1100px) {\n            #lv-dynamic-toolbox { width: 100%; margin-right: 0; }\n            .lv-tool-row { grid-template-columns: 1fr; gap: 10px; }\n            .lv-header { display: none; }\n            .lv-controls { flex-wrap: wrap; }\n            .lv-search-container { width: 100%; }\n        }\n    <\/style>\n\n    <div id=\"lv-main-view\">\n        <div class=\"lv-controls\">\n            <div class=\"lv-search-container\">\n                <input type=\"text\" id=\"lv-tool-search\" placeholder=\"\" onkeyup=\"filterTools()\">\n                <i class=\"fas fa-times-circle lv-search-clear\" id=\"lv-clear-btn\" onclick=\"clearSearch()\"><\/i>\n            <\/div>\n            <div id=\"lv-capsule-target\" class=\"lv-capsule-container\"><\/div>\n        <\/div>\n        <div id=\"lv-contents-target\"><\/div>\n    <\/div>\n\n    <div id=\"lv-detail-view\">\n        <div id=\"lv-detail-target\"><\/div>\n    <\/div>\n\n    <script>\n        let tools =[];\n        let activeCategory = \"ALL\";\n\n        function parseData() {\n            const lines = rawData.split('\\n');\n            tools =[];\n            lines.forEach(line => {\n                const cols = line.split('\\t');\n                if (cols[0] && cols[0].trim() !== \"\") { \n                    tools.push({\n                        name: cols[0].trim(),\n                        desc: cols[1]?.trim() || \"\",\n                        cat: cols[2]?.trim() || \"Uncategorized\",\n                        url: cols[3]?.trim() || \"#\",\n                        demo: cols[4]?.trim() || \"\",\n                        challenge: cols[5]?.trim() || \"\",\n                        features: cols[6]?.trim() || \"\",\n                        icon: cols[7]?.trim().split(' ')[0] || \"fa-toolbox\"\n                    });\n                }\n            });\n            renderCapsules();\n            renderTools();\n            typePlaceholder();\n        }\n\n        \/\/ Letter-by-letter placeholder animation\n        function typePlaceholder() {\n            const input = document.getElementById('lv-tool-search');\n            const fullText = \"Search tools...\";\n            let i = 0;\n            input.placeholder = \"\";\n            \n            function nextChar() {\n                if (i < fullText.length) {\n                    input.placeholder += fullText.charAt(i);\n                    i++;\n                    setTimeout(nextChar, 100);\n                } else {\n                    input.focus();\n                }\n            }\n            nextChar();\n        }\n\n        function renderCapsules() {\n            const target = document.getElementById('lv-capsule-target');\n            \/\/ Sort categories A-Z\n            const categories =[...new Set(tools.map(t => t.cat))].sort();\n            target.innerHTML = categories.map(cat => {\n                const isActive = cat === activeCategory;\n                const tooltipText = isActive ? \"Click again to unfilter\" : `Filter by ${cat}`;\n                return `<div class=\"lv-capsule ${isActive ? 'active' : ''}\" \n                             title=\"${tooltipText}\" \n                             onclick=\"setCategory('${cat}')\">${cat}<\/div>`;\n            }).join('');\n        }\n\n        function renderTools(filter = \"\") {\n            const target = document.getElementById('lv-contents-target');\n            target.innerHTML = '';\n            \n            const filtered = tools.filter(t => \n                (t.name + t.desc + t.cat).toLowerCase().includes(filter) && \n                (activeCategory === \"ALL\" || t.cat === activeCategory)\n            );\n\n            if (filtered.length === 0) {\n                target.innerHTML = '<div style=\"padding:40px; text-align:center; color:#999;\">No tools found matching your criteria.<\/div>';\n                return;\n            }\n\n            \/\/ Group tools by category and sort categories alphabetically\n            const groups = filtered.reduce((acc, t) => { (acc[t.cat] = acc[t.cat] ||[]).push(t); return acc; }, {});\n            const sortedGroupKeys = Object.keys(groups).sort();\n\n            for (const cat of sortedGroupKeys) {\n                const groupDiv = document.createElement('div');\n                groupDiv.innerHTML = `<div class=\"lv-category-title\">${cat}<\/div>\n                    <div class=\"lv-tool-row lv-header\"><div>Tool<\/div><div>Features<\/div><div style=\"text-align:center\">Action<\/div><\/div>`;\n                \n                groups[cat].forEach(tool => {\n                    const idx = tools.indexOf(tool);\n                    groupDiv.innerHTML += `\n                        <div class=\"lv-tool-row\">\n                            <div class=\"lv-tool-name-combined\">\n                                <i class=\"fas ${tool.icon} tool-icon\"><\/i>\n                                <span class=\"lv-tool-text\">${tool.name}<\/span>\n                            <\/div>\n                            <div class=\"lv-tool-desc\">${tool.desc}<\/div>\n                            <div class=\"lv-action-box\">\n                                <a href=\"${tool.url}\" target=\"_blank\" class=\"lv-btn lv-btn-launch\"><i class=\"fas fa-external-link-alt\" style=\"font-size:0.7rem\"><\/i> Launch<\/a>\n                                <button class=\"lv-btn lv-btn-more\" onclick=\"showDetails(${idx})\">Details<\/button>\n                            <\/div>\n                        <\/div>`;\n                });\n                target.appendChild(groupDiv);\n            }\n        }\n\n        window.setCategory = (cat) => { \n            if (activeCategory === cat) {\n                activeCategory = \"ALL\";\n            } else {\n                activeCategory = cat;\n            }\n            renderCapsules(); \n            filterTools(); \n            document.getElementById('lv-tool-search').focus();\n        };\n\n        window.filterTools = () => {\n            const val = document.getElementById('lv-tool-search').value;\n            renderTools(val.toLowerCase());\n        };\n\n        window.clearSearch = () => { \n            document.getElementById('lv-tool-search').value = ''; \n            window.filterTools(); \n            document.getElementById('lv-tool-search').focus();\n        };\n\n        window.showDetails = (index) => {\n            const tool = tools[index];\n            const scriptItems = tool.demo.split(\/[;]|\\d+\\.\/).filter(i => i.trim()).map(i => `<li>${i.trim()}<\/li>`).join('');\n            document.getElementById('lv-detail-target').innerHTML = `\n                <div class=\"lv-detail-card\">\n                    <div class=\"lv-modal-header\">\n                        <div style=\"display:flex; align-items:center; gap:15px;\">\n                            <i class=\"fas ${tool.icon}\" style=\"font-size:1.85rem; color:var(--primary);\"><\/i>\n                            <h2 style=\"margin:0; font-size: 1.25rem; font-weight:600;\">${tool.name}<\/h2>\n                        <\/div>\n                        <div class=\"lv-modal-header-actions\">\n                            <a href=\"${tool.url}\" target=\"_blank\" class=\"lv-btn lv-btn-launch\" style=\"width:140px; padding: 10px 0; border-radius:4px;\">Launch tool<\/a>\n                            <button class=\"lv-btn lv-btn-more\" style=\"width:100px; padding: 10px 0; border-radius:4px;\" onclick=\"showList()\">Back<\/button>\n                        <\/div>\n                    <\/div>\n                    <div class=\"lv-detail-body\">\n                        <div class=\"lv-detail-grid\">\n                            <div><span class=\"lv-label\">The Challenge<\/span><p style=\"margin:0; color:#555;\">${tool.challenge}<\/p><\/div>\n                            <div><span class=\"lv-label\">Key Features<\/span><p style=\"margin:0; color:#555;\">${tool.features}<\/p><\/div>\n                        <\/div>\n                        <div style=\"background:var(--primary-light); padding:20px; border-radius:8px; border-left:5px solid var(--primary);\">\n                            <span class=\"lv-label\">Try it out<\/span>\n                            <ul style=\"margin:10px 0 0 0; padding-left:20px; line-height: 1.6; font-size:0.95rem; color:#444;\">${scriptItems}<\/ul>\n                        <\/div>\n                    <\/div>\n                <\/div>`;\n            document.getElementById('lv-main-view').style.display = 'none';\n            document.getElementById('lv-detail-view').style.display = 'block';\n            window.scrollTo(0,0);\n        };\n\n        window.showList = () => {\n            document.getElementById('lv-main-view').style.display = 'block';\n            document.getElementById('lv-detail-view').style.display = 'none';\n            document.getElementById('lv-tool-search').focus();\n        };\n\n        \/\/ Initial Focus on load\n        window.addEventListener('load', () => {\n            document.getElementById('lv-tool-search').focus();\n        });\n\n        const rawData = `\n\n\n\nCopilot Credits Calculator\tEasily compare Copilot Credits purchasing options.\tProduct configurators\thttps:\/\/www.licensingschool.co.uk\/licenseverse\/copilot-credits-calculator\/\t1. The default predicted usage is 150,000 per month = Capacity Packs. 2. Slide any handles up and down to show how the numbers change. 3. Right click on a handle, type 100, and apply to all months = PAYG. 4. Click \u201chigher quantity\u201d > \u201c3m max\u201d. 5. Drag alternating months down to zero usage = Pre-purchase plan.\tIt\u2019s difficult to calculate the most cost-effective way to purchase Copilot Credits.\tAn interactive tool to compare Copilot Credits purchasing options (PAYG, Capacity Pack, or Pre-Purchase Plan).\tfa-chart-pie <svg width=\"16\" height=\"16\" viewBox=\"0 0 544 512\"><path d=\"M448 256c0-106-86-192-192-192V256H448zM96 256c0 88.4 71.6 160 160 160V256H96zm160-224C114.6 32 0 146.6 0 288s114.6 256 256 256 256-114.6 256-256S397.4 32 256 32z\"\/><\/svg>\nFind What You Need (FWYN)\tFind Licensing School training session content by your area of interest.\tFind info fast!\thttps:\/\/www.licensingschool.co.uk\/licenseverse\/find-what-you-need-fwyn\/find-what-you-need-fwyn\/\t1. Scroll to view all training content. 2. Press the \"Dear Louise\" button to see advanced training sessions only, then deselect it. 3. Type \u201cSentinel\u201d in the box to see related sessions. 4. The \u201cView broader session content\u201d button shows what else was covered, highlighting context. 5. Click on the top \u201cview session\u201d to open it.\tThe original FWYN contains vast amounts of content; finding relevant material via a manual search is becoming increasingly impractical as the library grows.\tA dynamic search tool that filters training videos and presentations by topic, creating focused learning paths for certification and expertise.\tfa-graduation-cap <svg width=\"16\" height=\"16\" viewBox=\"0 0 640 512\"><path d=\"M623.1 136.9l-282.7-101.2c-13.7-4.9-28.8-4.9-42.5 0L14.9 136.9c-18.1 6.5-18.1 32.2 0 38.7l282.7 101.2c13.7 4.9 28.8 4.9 42.5 0l282.7-101.2c18.1-6.5 18.1-32.2 0-38.7zM320 352c-35.3 0-64-28.7-64-64 0-14.7 5-28.2 13.4-39l-45.4-16.2L32 163.5V384c0 35.3 28.7 64 64 64h448c35.3 0 64-28.7 64-64V163.5L416 199.3l-45.4 16.2c8.4 10.8 13.4 24.3 13.4 39 0 35.3-28.7 64-64 64z\"\/><\/svg>\nExchange Rate Price Plotter\tEasily filter and view currency-based price adjustments relative to the US Dollar.\tPricing and announcements\thttps:\/\/www.licensingschool.co.uk\/licenseverse\/pricing\/exchange-rate-price-plotter\/\t1. Scroll to view the complete list of unfiltered changes. 2. Click \"Select none\" in the currency filter. 3. Select \"EUR\" to focus on Euro adjustments. 4. Click \"On-premises\" to remove those products from the view. 5. Select the \"Recent and upcoming\" filter for a streamlined look at current changes. 6. Press the reset button to clear all filters.\tMicrosoft exchange rate adjustments are frequently updated but the records are scattered in multiple places. Sifting through global changes to find specific currencies relevant to your region is cumbersome.\tTracks currency-based price adjustments relative to the US Dollar. Filter by currency, product category, and timeframe to understand regional pricing impacts.\tfa-money-bill-trend-up <svg width=\"16\" height=\"16\" viewBox=\"0 0 640 512\"><path d=\"M160 80V48c0-26.5 21.5-48 48-48h224c26.5 0 48 21.5 48 48v32h40c35.3 0 64 28.7 64 64v288c0 35.3-28.7 64-64 64H88c-35.3 0-64-28.7-64-64V144c0-35.3 28.7-64 64-64h72z\"\/><\/svg>\nGlossary 2.0\tAn interactive quick-search list of definitions which can also be used as a LicenseVerse contents page.\tFind info fast!\thttps:\/\/www.licensingschool.co.uk\/licenseverse\/glossary\/\t1. Scroll to view all terms and definitions. 2. Type \u201c365 E3\u201d in the box to see related terms. 3. You can quickly see all related Glossary entries. 4. Click \u201cEMS\u201d under the first entry under \"M\" to understand the acronym. 5. Click Enterprise Mobility and Security to read its definition. 6. Click \u201chere\u201d to launch into LicenseVerse.\tThe original Glossary was fragmented across multiple pages and lacked quick search capabilities.\tA centralized interactive live-search feature. Find definitions quickly or launch directly to relevant sections of LicenseVerse quickly using the useful links with each definition.\tfa-spell-check <svg width=\"16\" height=\"16\" viewBox=\"0 0 512 512\"><path d=\"M480 32c17.7 0 32 14.3 32 32s-14.3 32-32 32H288v288h192c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h192V96H32c-17.7 0-32-14.3-32-32S14.3 32 32 32h448z\"\/><\/svg>\nLicensing Guides Gallery\tQuickly filter through our entire collection of Licensing Guides.\tFind info fast!\thttps:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-guides-gallery\/\t1. Scroll to view all Licensing Guides. 2. Toggle between \"A-Z\" and \"Newest\" sorting. 3. Find popular guides using the one-click category capsules. 4. Click Microsoft 365, then type \"ent\" to see only the Enterprise variant. 5. Click a tile to open the datasheet in a new tab.\tThe vast volume of available Licensing Guides we have collected over the years makes finding a specific document difficult.\tA live-search gallery that filters through the entire collection of Licensing Guides using category capsules and text search.\tfa-book-open <svg width=\"16\" height=\"16\" viewBox=\"0 0 576 512\"><path d=\"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.85-7.27 13.18v330.73c0 9.42 9.94 15.86 18.17 10.97 61.58-36.57 161.53-47.5 220.51-50.77 16.35-.91 29.33-14.32 29.33-30.76V62.75c0-17.06-13.21-31.24-30.22-30.7z\"\/><\/svg>\nOffice 365\/Microsoft 365 Plan Picker\tEasily understand the suitable Office 365\/Microsoft 365 options with this interactive configuration tool.\tProduct configurators\thttps:\/\/www.licensingschool.co.uk\/licenseverse\/office-365-microsoft-365-plan-picker\/\t1. Choose Commercial as your sector. 2. Select \u201c301+ users\u201d. 3. Hover over the information box to see an explanation of the feature. 4. Toggle \u201cMicrosoft 365 Apps (local\u2026)\u201d, note how the tool recognizes the Enterprise license requirement. 5. Type \u201cIntune Plan 1\u201d in the search box and select it, see how it suggests multiple standalone plans rather than a single more expensive option. 6. Type \u201cWindows Enterprise\u201d in the search box and select it. 7. Watch as the products change prioritizing the cheapest option.\tIdentifying the correct 365 license based on specific features can be challenging with bloated or cumbersome comparison tools.\tAn interactive configuration tool that recommends the best 365 license for specific needs based on a hand-picked set of popular features.\tfa-cubes-stacked <svg width=\"16\" height=\"16\" viewBox=\"0 0 512 512\"><path d=\"M488 128L256 0 24 128l232 128 232-128zm0 128L256 384l-232-128V128l232 128 232-128v128z\"\/><\/svg>\nPartner Center Archive\tSearch through an archive of Partner Center announcements dating back to 2022.\tPricing and announcements\thttps:\/\/www.licensingschool.co.uk\/licenseverse\/partner-center-announcements\/\t1. Scroll to view all announcements. 2. Click on a tile to jump to the relevant Microsoft announcement. 3. Use the drop-downs to filter by a specific month (then press reset). 4. Type \u201cSQL changes\u201d in the box to see related announcements. 5. Click the bottom tile to view a November 2022 announcement not easily found elsewhere.\tOfficial Partner Center announcements vanish after 12 months, making historical referencing impossible.\tA searchable archive of all Partner Center announcements dating back to February 2022, providing a permanent historical record.\tfa-bullhorn <svg width=\"16\" height=\"16\" viewBox=\"0 0 512 512\"><path d=\"M480 32c-12.9 0-24.6 7.8-29.6 19.8L384 192H256l-50.3-75.5c-6.1-9.2-16.5-14.5-27.7-14.5H128V32c0-17.7-14.3-32-32-32S64 14.3 64 32v352H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h352l66.4 113.8c5.4 9.3 15.3 15.3 26 15.3 16.6 0 30-13.4 30-30V62c0-16.6-13.4-30-30-30z\"\/><\/svg>\nProduct Price Plotter\tEasily filter and view product price changes over time.\tPricing and announcements\thttps:\/\/www.licensingschool.co.uk\/licenseverse\/pricing\/product-price-plotter\/\t1. Scroll to view the complete list of unfiltered changes. 2. Type \"365 E3\" in the search field to isolate that plan. 3. Deselect all sector filters apart from \"Commercial\". 4. Use the \"Year\" dropdown to select \"2022\" to see changes this year. 5. Click the \"Recent and upcoming\" filter for a streamlined view of current changes. 6. Press the reset button to clear all filters.\tTracking numerous historical and future product price adjustments across multiple sources is difficult. Finding specific changes relevant to a particular product is often time consuming.\tA visual timeline of Microsoft pricing adjustments. Use the \"super-search\" to isolate the history of a specific product or use one-click filters for upcoming changes.\tfa-chart-line <svg width=\"16\" height=\"16\" viewBox=\"0 0 512 512\"><path d=\"M496 384H64V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v320c0 8.8 7.2 16 16 16h448c8.8 0 16-7.2 16-16s-7.2-16-16-16zm-332.3-102c-6.2-6.3-16.4-6.3-22.6 0l-64 64c-6.2 6.3-6.2 16.4 0 22.6s16.4 6.2 22.6 0L152 316.7l50.7 50.7c6.2 6.3 16.4 6.3 22.6 0l128-128c6.2-6.3 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L214.6 334.6l-50.9-52.6z\"\/><\/svg>\nPromotions Playground\tView current, upcoming, or expired promotions with instant filters.\tPricing and announcements\thttps:\/\/www.licensingschool.co.uk\/licenseverse\/promotions-playground\/\t1. Scroll the page to view all promotions. 2. Hover over column one to see the official promotion name, as well as the more user-friendly option we have defaulted to. 3. Stay up to date with the \u201cNew promotions this month\u201d toggle. 4. See expired promotions using the toggle. 5. Click a category capsule to find promotions in a category with one click. 6. Type \u201cCopilot for Business\u201d in the box to search a product of interest.\tMicrosoft promotions are scattered across multiple platforms and you have to remember to download the Global Promo Readiness Guide PDf regularly.\tA single, searchable interface to view current, upcoming, or expired promotions. Instantly filter by product, category, or status.\tfa-tags <svg width=\"16\" height=\"16\" viewBox=\"0 0 640 512\"><path d=\"M496 0H144C117.5 0 96 21.5 96 48v256c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm416 128v192c0 35.3-28.7 64-64 64H160c-35.3 0-64-28.7-64-64V384h352c61.9 0 112-50.1 112-112V96h16c35.3 0 64 28.7 64 64v96z\"\/><\/svg>\nSQL Server Calculator\tUnderstand SQL licensing options with this interactive configuration tool.\tProduct configurators\thttps:\/\/www.licensingschool.co.uk\/licenseverse\/sql-server-calculator\/\t1. Enter a quantity of 2 SQL Servers, then press \u201cNext\u201d twice. 2. Enter 20 as the number of devices accessing SQL Server, press \u201cProceed\u201d. 3. For SQL Server 1, enter 1 and 4 into the CPUs and Cores boxes. 4. Adjust SQL Server 2 to Enterprise edition and set as a Virtual Machine. 5. Enter 8 as the number of vCPUs. 6. View the recommended licenses generated on the right-hand side. Note how the tool recognizes that virtual core licensing requires Subscription Benefits.\tDetermining the correct license mix for physical and virtual SQL Server environments is highly complex.\tAn interactive configurator that analyzes physical or virtual server setups to generate optimized licensing suggestions automatically.\tfa-server <svg width=\"16\" height=\"16\" viewBox=\"0 0 512 512\"><path d=\"M480 160H32c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32h448c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32zm0 160H32c-17.7 0-32-14.3-32-32v-64c0-17.7 14.3-32 32-32h448c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32zm0 160H32c-17.7 0-32-14.3-32-32v-64c0-17.7 14.3-32 32-32h448c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32zM112 80c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm0 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm0 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16z\"\/><\/svg>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n`;\n        parseData();\n    <\/script>\n<\/div>\n\n\n\n<!-- LicenseVerse Brute Force Scroll-to-Top Widget -->\n<style>\n\/* Scoped to #lsv-scroll-top-widget *\/\n#lsv-scroll-top-widget {\n    --lsv-theme-color: #97C93F;\n    --lsv-theme-hover: #87b535;\n    --lsv-theme-active: #76a02f;\n}\n\n#lsv-scroll-top-widget .lsv-scroll-top-btn {\n    position: fixed !important;\n    bottom: 30px !important;\n    right: 30px !important;\n    background-color: var(--lsv-theme-color);\n    color: #ffffff;\n    border: none;\n    border-radius: 28px;\n    padding: 12px 22px 12px 16px;\n    font-family: \"Segoe UI\", system-ui, -apple-system, sans-serif;\n    font-size: 14px;\n    font-weight: 700;\n    letter-spacing: 0.5px;\n    cursor: pointer;\n    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    z-index: 99999 !important;\n    \n    opacity: 0;\n    visibility: hidden;\n    transform: translateY(15px);\n    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);\n    \n    touch-action: manipulation;\n    -webkit-tap-highlight-color: transparent;\n}\n\n#lsv-scroll-top-widget .lsv-scroll-top-btn.show {\n    opacity: 1;\n    visibility: visible;\n    transform: translateY(0);\n}\n\n#lsv-scroll-top-widget .lsv-scroll-top-btn:hover {\n    background-color: var(--lsv-theme-hover);\n    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.25);\n    transform: translateY(-2px);\n}\n\n\/* Active state for immediate feedback *\/\n#lsv-scroll-top-widget .lsv-scroll-top-btn:active {\n    background-color: var(--lsv-theme-active);\n    transform: scale(0.95);\n    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n    transition: transform 0.05s ease;\n}\n\n#lsv-scroll-top-widget .lsv-scroll-top-btn svg {\n    width: 22px;\n    height: 22px;\n    flex-shrink: 0;\n}\n\n\/* Mobile responsiveness *\/\n@media (max-width: 768px) {\n    #lsv-scroll-top-widget .lsv-scroll-top-btn {\n        bottom: 20px !important;\n        right: 20px !important;\n        padding: 10px 18px 10px 14px;\n        font-size: 13px;\n    }\n    #lsv-scroll-top-widget .lsv-scroll-top-btn svg {\n        width: 20px;\n        height: 20px;\n    }\n}\n\n\/* Print: hide the button *\/\n@media print {\n    #lsv-scroll-top-widget { display: none !important; }\n}\n\n\/* Smooth scroll fallback for CSS-based scrolling *\/\nhtml, body {\n    scroll-behavior: smooth;\n}\n\n\/* Respect user preference for reduced motion *\/\n@media (prefers-reduced-motion: reduce) {\n    html, body {\n        scroll-behavior: auto;\n    }\n}\n<\/style>\n\n<div id=\"lsv-scroll-top-widget\">\n    <button class=\"lsv-scroll-top-btn\" id=\"lsv-scroll-top-btn\" aria-label=\"Scroll to top\" aria-hidden=\"true\">\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"3\" stroke=\"currentColor\" aria-hidden=\"true\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 15.75l7.5-7.5 7.5 7.5\" \/>\n        <\/svg>\n        <span>TOP<\/span>\n    <\/button>\n<\/div>\n\n<script>\n(function() {\n    'use strict';\n    \n    const CONFIG = {\n        showAfterScroll: 300,\n        throttleDelay: 50,\n        \/\/ Emulate 3 presses with these intervals (ms) to guarantee scroll reaches the top\n        pressIntervals: [0, 500, 1000] \n    };\n\n    const widget = document.getElementById('lsv-scroll-top-widget');\n    const btn = document.getElementById('lsv-scroll-top-btn');\n    \n    if (!widget || !btn) return;\n\n    let lastScrollTime = 0;\n    let scrollTimers = [];\n    \n    \/\/ The Scroll Command\n    function executeScrollCommand() {\n        const currentScroll = window.scrollY || window.pageYOffset || document.documentElement.scrollTop || 0;\n        if (currentScroll === 0) return;\n\n        \/\/ Check if user has system accessibility settings requesting reduced motion\n        const prefersReducedMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n        \/\/ Perform smooth native scroll\n        try {\n            window.scrollTo({ \n                top: 0, \n                behavior: prefersReducedMotion ? 'auto' : 'smooth' \n            });\n        } catch (e) {\n            \/\/ Fallback for ancient browsers that don't support the smooth behavior object\n            window.scrollTo(0, 0);\n        }\n    }\n\n    \/\/ Emulate 3 rapid presses to overcome sticky\/scroll-jacking elements\n    function bruteForceScroll() {\n        \/\/ Clear any pending timers from previous clicks to prevent buildup\n        scrollTimers.forEach(timer => clearTimeout(timer));\n        scrollTimers = [];\n\n        \/\/ Trigger the scroll command 3 times in succession\n        CONFIG.pressIntervals.forEach((delay, index) => {\n            const timer = setTimeout(() => {\n                \/\/ Add a tiny 16ms delay on the first call to let layout\/touch events settle\n                if (index === 0) {\n                    setTimeout(executeScrollCommand, 16);\n                } else {\n                    executeScrollCommand();\n                }\n            }, delay);\n            scrollTimers.push(timer);\n        });\n    }\n\n    \/\/ Throttled scroll handler for button visibility\n    function onScroll() {\n        const now = Date.now();\n        if (now - lastScrollTime < CONFIG.throttleDelay) return;\n        lastScrollTime = now;\n\n        const scrollY = window.scrollY || window.pageYOffset || document.documentElement.scrollTop || 0;\n        \n        if (scrollY > CONFIG.showAfterScroll) {\n            btn.classList.add('show');\n            btn.setAttribute('aria-hidden', 'false');\n        } else {\n            btn.classList.remove('show');\n            btn.setAttribute('aria-hidden', 'true');\n        }\n    }\n\n    \/\/ Click handler - triggers the 3x emulation\n    btn.addEventListener('click', function(e) {\n        e.preventDefault();\n        e.stopPropagation();\n        bruteForceScroll();\n    });\n\n    \/\/ Keyboard accessibility - triggers the 3x emulation\n    btn.addEventListener('keydown', function(e) {\n        if (e.key === 'Enter' || e.key === ' ') {\n            e.preventDefault();\n            e.stopPropagation();\n            bruteForceScroll();\n        }\n    });\n\n    \/\/ Touch support - triggers the 3x emulation\n    btn.addEventListener('touchstart', function(e) {\n        \/\/ Only prevent default on touchstart to allow touchend to handle the logic cleanly\n        e.preventDefault();\n    }, { passive: false });\n\n    btn.addEventListener('touchend', function(e) {\n        e.preventDefault();\n        bruteForceScroll();\n    });\n\n    \/\/ Passive scroll listener\n    if (window.addEventListener) {\n        window.addEventListener('scroll', onScroll, { passive: true });\n        onScroll();\n    }\n\n    \/\/ Cleanup\n    if (window.addEventListener) {\n        window.addEventListener('beforeunload', function() {\n            scrollTimers.forEach(timer => clearTimeout(timer));\n            window.removeEventListener('scroll', onScroll);\n        });\n    }\n})();\n<\/script>\n\n\n\n<!-- ============================================================\n  LS NAV \u2014 CONFIGURATION\n  Uncomment ONE line below to apply the active green highlight.\n============================================================ -->\n<script>\n  \/\/ var LS_ACTIVE_ITEM = \"LicenseVerse\";\n  \/\/ var LS_ACTIVE_ITEM = \"Glossary\";              \n   var LS_ACTIVE_ITEM = \"Licensing School Toolbox\";\n  \/\/ var LS_ACTIVE_ITEM = \"SCR Community forum\";\n  \/\/ var LS_ACTIVE_ITEM = \"LicenseVerse updates\";\n  \/\/ var LS_ACTIVE_ITEM = \"Licensing blog\";\n  \/\/ var LS_ACTIVE_ITEM = \"Training overview\";\n  \/\/ var LS_ACTIVE_ITEM = \"FWYN (Find What You Need)\";\n  \/\/ var LS_ACTIVE_ITEM = \"Register for training\";\n  \/\/ var LS_ACTIVE_ITEM = \"Exams overview\";\n  \/\/ var LS_ACTIVE_ITEM = \"Licensing Scholar exams\";\n  \/\/ var LS_ACTIVE_ITEM = \"Body of Knowledge exams\";\n<\/script>\n<!-- ============================================================ -->\n\n<style>\n  \/* =========================================================\n     [ FUTURE EDIT SECTION ] \n     Easily adjust specific settings below.\n  ========================================================= *\/\n  :root {\n    \/* Change the number below to make the typed text bigger or smaller. *\/\n    --search-input-font-size: 14px; \n  }\n\n  #ls-nav { display: none; }\n\n  .ls-nav-injected {\n    font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;\n    box-sizing: border-box;\n    width: 100%;\n    padding: 10px 0;\n  }\n\n  .ls-nav-injected * { box-sizing: border-box; }\n\n  \/* \"Dashboard contents\" title at the top *\/\n  .ls-nav-title {\n    font-size: 20px !important;\n    font-weight: 600 !important;\n    color: #1a1a1a !important;\n    margin: -14px 0 24px -4px !important; \/* Moved UP slightly *\/\n    padding: 0 !important;\n    border: none !important;\n    background: none !important;\n    letter-spacing: -0.2px;\n  }\n\n  .ls-nav-section { margin-bottom: 18px; }\n\n  .ls-nav-header {\n    font-size: 11px !important;\n    font-weight: 600 !important;\n    color: #94a3b8 !important;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    margin: 0 0 6px 0 !important;\n    padding: 0 0 6px 0 !important;\n    border-bottom: 1px solid #e2e8f0 !important;\n    background: none !important;\n  }\n\n  .ls-nav-injected ul {\n    list-style: none !important;\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n\n  .ls-nav-injected li {\n    margin: 0 !important;\n    padding: 0 !important;\n    list-style: none !important;\n  }\n\n  \/* --- MAIN LINKS --- *\/\n  .ls-nav-injected a {\n    display: flex !important;\n    align-items: center;\n    padding: 7px 12px 7px 10px !important; \/* Base padding *\/\n    text-decoration: none !important;\n    color: #334155 !important;\n    font-size: 14px !important;\n    font-weight: 400 !important;\n    border-left: 3px solid transparent;\n    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important; \/* Smooth animation *\/\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n\n  .ls-nav-injected a svg {\n    width: 17px;\n    height: 17px;\n    min-width: 17px;\n    margin-right: 12px;\n    stroke: #8dc63f;\n    fill: none;\n    stroke-width: 1.5;\n    stroke-linecap: round;\n    stroke-linejoin: round;\n    transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n  }\n\n  \/* Link Hover Animations *\/\n  .ls-nav-injected a:hover {\n    background-color: #f8fafc !important;\n    color: #0f172a !important;\n    padding-left: 14px !important; \/* Slides text to the right slightly *\/\n  }\n\n  .ls-nav-injected a:hover svg {\n    transform: scale(1.15); \/* Subtle pop for the icon *\/\n  }\n\n  .ls-nav-injected a.ls-active {\n    background-color: #f4faeb !important;\n    border-left-color: #8dc63f !important;\n    color: #0f172a !important;\n    font-weight: 600 !important;\n  }\n\n  \/* --- EXPANDABLE ROW (LicenseVerse) --- *\/\n  .ls-expand-toggle {\n    display: flex !important;\n    align-items: center;\n    justify-content: space-between;\n    padding: 7px 12px 7px 10px !important;\n    cursor: pointer;\n    color: #334155 !important;\n    font-size: 14px !important;\n    font-weight: 400 !important;\n    border-left: 3px solid transparent;\n    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;\n    background: transparent !important;\n    user-select: none;\n  }\n\n  \/* Toggle Hover Animation *\/\n  .ls-expand-toggle:hover {\n    background-color: #f8fafc !important;\n    color: #0f172a !important;\n    padding-left: 14px !important; \/* Slides text right slightly *\/\n  }\n\n  .ls-expand-toggle.ls-active {\n    background-color: #f4faeb !important;\n    border-left-color: #8dc63f !important;\n    color: #0f172a !important;\n    font-weight: 600 !important;\n  }\n\n  .ls-expand-left {\n    display: flex;\n    align-items: center;\n  }\n\n  .ls-expand-toggle svg.ls-toggle-icon {\n    width: 17px;\n    height: 17px;\n    min-width: 17px;\n    margin-right: 12px;\n    stroke: #8dc63f;\n    fill: none;\n    stroke-width: 1.5;\n    stroke-linecap: round;\n    stroke-linejoin: round;\n    transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n  }\n\n  .ls-expand-toggle:hover svg.ls-toggle-icon {\n    transform: scale(1.15); \/* Icon pop *\/\n  }\n\n  .ls-chevron {\n    width: 18px; \n    height: 18px;\n    stroke: #475569;\n    fill: none;\n    stroke-width: 3;\n    stroke-linecap: round;\n    stroke-linejoin: round;\n    transition: transform 0.25s ease;\n    flex-shrink: 0;\n  }\n\n  .ls-expand-toggle.ls-open {\n    background-color: #f4faeb !important;\n    border-left-color: #8dc63f !important;\n    color: #0f172a !important;\n    font-weight: 600 !important;\n  }\n\n  .ls-expand-toggle.ls-open .ls-chevron {\n    transform: rotate(180deg);\n    stroke: #8dc63f;\n  }\n\n  \/* SUBMENU - Contains Bottom & Right Border *\/\n  .ls-submenu {\n    overflow: hidden;\n    max-height: 0;\n    margin-left: 24px;\n    border-left: 2px solid #e2e8f0;\n    border-bottom: 1px solid transparent;\n    border-right: 1px solid transparent;\n    border-radius: 0 0 8px 8px; \/* Rounded bottom corners *\/\n    padding-bottom: 0;\n    margin-bottom: 0;\n    transition: max-height 0.35s ease, padding-bottom 0.35s ease, margin-bottom 0.35s ease, border-color 0.35s ease;\n    background: #ffffff;\n  }\n\n  .ls-submenu.ls-open {\n    max-height: 400px;\n    padding-bottom: 8px; \n    margin-bottom: 6px;  \n    border-bottom: 1px solid #e2e8f0; \n    border-right: 1px solid #e2e8f0; \n  }\n  \n  \/* Remove border radius from parent when open to connect seamlessly *\/\n  .ls-expand-toggle.ls-open {\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n\n  .ls-submenu a {\n    padding: 7px 12px 7px 32px !important;\n    font-size: 13.5px !important;\n    color: #4b5563 !important;\n    border-left: none !important;\n    position: relative;\n    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;\n  }\n\n  \/* Submenu Hover slide *\/\n  .ls-submenu a:hover {\n    background-color: #f8fafc !important;\n    color: #0f172a !important;\n    padding-left: 36px !important; \/* Slide animation *\/\n  }\n\n  \/* GREEN BULLET POINTS *\/\n  .ls-submenu a::before {\n    content: \"\";\n    position: absolute;\n    left: 16px;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 5px;\n    height: 5px;\n    border-radius: 50%;\n    background: #8dc63f; \n    transition: left 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.2s ease, background-color 0.2s ease;\n  }\n\n  \/* Dot follows text + slight scale up *\/\n  .ls-submenu a:hover::before {\n    left: 20px; \/* Moves in unison with the sliding text *\/\n    transform: translateY(-50%) scale(1.3); \n    background: #7db432; \n  }\n\n  \/* -- NEW: EDGE-TO-EDGE SEARCH STYLES -- *\/\n  .inline-search-input-group {\n    display: flex;\n    align-items: stretch;\n    background: #ffffff;\n    padding: 0; \n    width: 100%;\n    border-bottom: 1px solid #e2e8f0;\n  }\n\n  #ls-inline-search-input {\n    border: none !important; \n    outline: none !important; \n    width: 100%; \n    font-size: var(--search-input-font-size) !important; \n    color: #111827 !important; \n    background: transparent !important;\n    font-family: inherit;\n    padding: 10px 14px !important; \n    align-self: center;\n    min-width: 0; \n    box-shadow: none !important;\n    border-radius: 0 !important;\n  }\n\n  .inline-search-go-btn {\n    background-color: #8dc63f;\n    color: #ffffff;\n    border: none;\n    padding: 0 16px; \n    font-size: 12px;\n    font-weight: 700;\n    text-transform: uppercase;\n    cursor: pointer;\n    transition: background-color 0.2s ease;\n    flex-shrink: 0;\n    outline: none;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    line-height: 1;\n    border-radius: 0 !important; \/* Flush corner *\/\n  }\n\n  .inline-search-go-btn:hover, \n  .inline-search-go-btn:focus {\n    background-color: #36B44A;\n  }\n  \n  \/* Hides the old search box *\/\n  .ls-search-box { display: none !important; }\n  .ls-submenu-divider { display: none !important; }\n\n  \/* Fade siblings when LicenseVerse is expanded *\/\n  .ls-nav-injected.lv-open li:not(.lv-parent),\n  .ls-nav-injected.lv-open .ls-nav-section:not(.lv-section) {\n    opacity: 0.35;\n    transition: opacity 0.25s ease;\n  }\n\n  .ls-nav-injected.lv-open li.lv-parent,\n  .ls-nav-injected.lv-open .ls-nav-section.lv-section {\n    opacity: 1;\n    transition: opacity 0.25s ease;\n  }\n\n  .ls-nav-injected li,\n  .ls-nav-injected .ls-nav-section {\n    transition: opacity 0.25s ease;\n  }\n\n<\/style>\n\n<!-- Hidden source \u2014 JS clones this into the ToC panel -->\n<div id=\"ls-nav\">\n  <div class=\"ls-nav-injected\">\n\n    <h2 class=\"ls-nav-title\">Dashboard contents<\/h2>\n\n    <div class=\"ls-nav-section lv-section\">\n      <h3 class=\"ls-nav-header\">Find licensing information<\/h3>\n      <ul>\n        <li class=\"lv-parent\">\n          <!-- LicenseVerse expandable row -->\n          <div class=\"ls-expand-toggle\" data-ls-expand=\"lv-submenu\">\n            <span class=\"ls-expand-left\">\n              <svg class=\"ls-toggle-icon\" viewBox=\"0 0 24 24\"><path d=\"M4 4h4v16H4z M10 4h4v16h-4z M16 4h4v16h-4z\"\/><\/svg>\n              <span>LicenseVerse<\/span>\n            <\/span>\n            <svg class=\"ls-chevron\" viewBox=\"0 0 24 24\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>\n          <\/div>\n          <div class=\"ls-submenu\" id=\"lv-submenu\">\n            <!-- NEW SEARCH BOX GOES HERE -->\n            <div class=\"inline-search-input-group\">\n                <input type=\"text\" id=\"ls-inline-search-input\" placeholder=\"Search\u2026\" autocomplete=\"off\" \/>\n                <button id=\"ls-inline-search-btn\" class=\"inline-search-go-btn\">GO<\/button>\n            <\/div>\n            <!-- NO DIVIDER, NO EXACT MATCH -->\n            <a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/on-premises\/\">On-premises products<\/a>\n            <a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/ols\/\">Online Services<\/a>\n            <a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/azure\/\">Azure<\/a>\n            <a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/common-info\/\">Common<\/a>\n          <\/div>\n        <\/li>\n        <li><a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/glossary\/\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\"\/><path d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\"\/><\/svg>\n          <span>Glossary<\/span>\n        <\/a><\/li>\n        <li><a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/\">\n          <svg viewBox=\"0 0 24 24\"><polygon points=\"12 2 15.09 5.09 19.5 5.5 20 10 23 12 20 14 19.5 18.5 15.09 18.91 12 22 8.91 18.91 4.5 18.5 4 14 1 12 4 10 4.5 5.5 8.91 5.09 12 2\"\/><\/svg>\n          <span>Licensing School Toolbox<\/span>\n        <\/a><\/li>\n      <\/ul>\n    <\/div>\n\n    <div class=\"ls-nav-section\">\n      <h3 class=\"ls-nav-header\">KEEP UP TO DATE<\/h3>\n      <ul>\n        <li><a href=\"https:\/\/scr.licensingschool.co.uk\/\" target=\"_blank\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"\/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"\/><\/svg>\n          <span>SCR Community forum<\/span>\n        <\/a><\/li>\n        <li><a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/licenseverse-updates\/\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"\/><path d=\"M3 3v5h5\"\/><\/svg>\n          <span>LicenseVerse updates<\/span>\n        <\/a><\/li>\n        <li><a href=\"https:\/\/www.licensingschool.co.uk\/licensing-blog\/\" target=\"_blank\">\n          <svg viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"\/><line x1=\"3\" y1=\"9\" x2=\"21\" y2=\"9\"\/><line x1=\"9\" y1=\"21\" x2=\"9\" y2=\"9\"\/><\/svg>\n          <span>Licensing blog<\/span>\n        <\/a><\/li>\n      <\/ul>\n    <\/div>\n\n    <div class=\"ls-nav-section\">\n      <h3 class=\"ls-nav-header\">LEARN<\/h3>\n      <ul>\n        <li><a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/find-what-you-need-fwyn\/\">\n          <svg viewBox=\"0 0 24 24\"><line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\"\/><line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"\/><line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\"\/><\/svg>\n          <span>Training overview<\/span>\n        <\/a><\/li>\n        <li><a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/find-what-you-need-fwyn\/find-what-you-need-fwyn\/\">\n          <svg viewBox=\"0 0 24 24\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"\/><\/svg>\n          <span>FWYN (Find What You Need)<\/span>\n        <\/a><\/li>\n        <li><a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/find-what-you-need-fwyn\/register-for-training\/\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"\/><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"\/><\/svg>\n          <span>Register for training<\/span>\n        <\/a><\/li>\n      <\/ul>\n    <\/div>\n\n    <div class=\"ls-nav-section\">\n      <h3 class=\"ls-nav-header\">Demonstrate knowledge<\/h3>\n      <ul>\n        <li><a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-exams\/\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\/><path d=\"M15 2H9a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z\"\/><path d=\"M9 14l2 2 4-4\"\/><\/svg>\n          <span>Exams overview<\/span>\n        <\/a><\/li>\n        <li><a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-exams\/licensing-scholar-exams\/\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M22 10v6M2 10l10-5 10 5-10 5z\"\/><path d=\"M6 12v5c3 3 9 3 12 0v-5\"\/><\/svg>\n          <span>Licensing Scholar exams<\/span>\n        <\/a><\/li>\n        <li><a href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-exams\/licensing-body-of-knowledge-exams\/\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"\/><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"\/><polyline points=\"10 9 9 9 8 9\"\/><\/svg>\n          <span>Body of Knowledge exams<\/span>\n        <\/a><\/li>\n      <\/ul>\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<script>\n(function () {\n\n  function inject() {\n    var tocHeader = document.querySelector('.toc_header');\n    if (!tocHeader) return false;\n\n    var tocWidget = tocHeader.parentElement;\n    if (!tocWidget) return false;\n\n    var source = document.getElementById('ls-nav');\n    if (!source) return false;\n    var navClone = source.querySelector('.ls-nav-injected').cloneNode(true);\n\n    \/\/ Apply manual active highlight from config\n    var activeLabel = (typeof LS_ACTIVE_ITEM !== 'undefined') ? LS_ACTIVE_ITEM.trim().toLowerCase() : '';\n    if (activeLabel) {\n      navClone.querySelectorAll('a').forEach(function (a) {\n        var span = a.querySelector('span');\n        if (span && span.textContent.trim().toLowerCase() === activeLabel) {\n          a.classList.add('ls-active');\n        }\n      });\n    }\n\n    \/\/ Wire up expand toggles\n    navClone.querySelectorAll('.ls-expand-toggle').forEach(function (toggle) {\n      var targetId = toggle.getAttribute('data-ls-expand');\n      var submenu = navClone.querySelector('#' + targetId);\n      if (!submenu) return;\n      toggle.addEventListener('click', function () {\n        var isOpen = toggle.classList.contains('ls-open');\n        toggle.classList.toggle('ls-open', !isOpen);\n        submenu.classList.toggle('ls-open', !isOpen);\n        navClone.classList.toggle('lv-open', !isOpen);\n        \n        \/\/ Auto-focus the search box upon expansion \n        if (!isOpen) {\n          var searchInput = submenu.querySelector('#ls-inline-search-input');\n          if (searchInput) {\n            setTimeout(function() { searchInput.focus(); }, 150);\n          }\n        }\n      });\n    });\n\n    \/\/ Wire up LicenseVerse edge-to-edge search box\n    var searchInput = navClone.querySelector('#ls-inline-search-input');\n    var searchBtn   = navClone.querySelector('#ls-inline-search-btn');\n    \n    function doSearch() {\n      var term = searchInput ? searchInput.value.trim() : '';\n      if (!term) return;\n      \/\/ Exact match logic removed\n      window.location.href = 'https:\/\/www.licensingschool.co.uk\/licenseverse\/?s=' + encodeURIComponent(term);\n    }\n    if (searchInput) searchInput.addEventListener('keypress', function(e) { if (e.key === 'Enter') doSearch(); });\n    if (searchBtn)   searchBtn.addEventListener('click', doSearch);\n\n    \/\/ Wipe everything inside the widget and inject\n    while (tocWidget.firstChild) tocWidget.removeChild(tocWidget.firstChild);\n    tocWidget.appendChild(navClone);\n\n    \/\/ Stop the plugin re-injecting anything\n    new MutationObserver(function (mutations) {\n      mutations.forEach(function (m) {\n        m.addedNodes.forEach(function (node) {\n          if (node === navClone || navClone.contains(node)) return;\n          if (node.parentNode) node.parentNode.removeChild(node);\n        });\n      });\n    }).observe(tocWidget, { childList: true });\n\n    return true;\n  }\n\n  var tries = 0;\n  function attempt() {\n    if (inject()) return;\n    if (++tries < 30) setTimeout(attempt, 200);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', attempt);\n  } else {\n    attempt();\n  }\n\n})();\n<\/script>\n","protected":false},"featured_media":0,"parent":0,"menu_order":4,"template":"custom-single.php","lesson_category":[57],"class_list":["post-8446","lessons","type-lessons","status-publish","hentry","lesson_category-free-resources","entry","no-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Licensing School Toolbox - LicenseVerse<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Licensing School Toolbox - LicenseVerse\" \/>\n<meta property=\"og:description\" content=\"Welcome to the Licensing School Toolbox. This collection of interactive tools takes your licensing life to a new level of&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/\" \/>\n<meta property=\"og:site_name\" content=\"LicenseVerse\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-09T13:55:00+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/\",\"url\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/\",\"name\":\"Licensing School Toolbox - LicenseVerse\",\"isPartOf\":{\"@id\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/#website\"},\"datePublished\":\"2026-01-19T15:42:24+00:00\",\"dateModified\":\"2026-04-09T13:55:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Licensing School Toolbox\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/#website\",\"url\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/\",\"name\":\"LicenseVerse\",\"description\":\"Microsoft Licensing Explained\",\"publisher\":{\"@id\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/#organization\",\"name\":\"LicenseVerse\",\"url\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/wp-content\/uploads\/sites\/4\/2023\/10\/Licensing-Verse_101023-01.png\",\"contentUrl\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/wp-content\/uploads\/sites\/4\/2023\/10\/Licensing-Verse_101023-01.png\",\"width\":906,\"height\":394,\"caption\":\"LicenseVerse\"},\"image\":{\"@id\":\"https:\/\/www.licensingschool.co.uk\/licenseverse\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Licensing School Toolbox - LicenseVerse","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.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/","og_locale":"en_GB","og_type":"article","og_title":"Licensing School Toolbox - LicenseVerse","og_description":"Welcome to the Licensing School Toolbox. This collection of interactive tools takes your licensing life to a new level of&hellip;","og_url":"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/","og_site_name":"LicenseVerse","article_modified_time":"2026-04-09T13:55:00+00:00","twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/","url":"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/","name":"Licensing School Toolbox - LicenseVerse","isPartOf":{"@id":"https:\/\/www.licensingschool.co.uk\/licenseverse\/#website"},"datePublished":"2026-01-19T15:42:24+00:00","dateModified":"2026-04-09T13:55:00+00:00","breadcrumb":{"@id":"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.licensingschool.co.uk\/licenseverse\/licensing-school-toolbox\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.licensingschool.co.uk\/licenseverse\/"},{"@type":"ListItem","position":2,"name":"Licensing School Toolbox"}]},{"@type":"WebSite","@id":"https:\/\/www.licensingschool.co.uk\/licenseverse\/#website","url":"https:\/\/www.licensingschool.co.uk\/licenseverse\/","name":"LicenseVerse","description":"Microsoft Licensing Explained","publisher":{"@id":"https:\/\/www.licensingschool.co.uk\/licenseverse\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.licensingschool.co.uk\/licenseverse\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/www.licensingschool.co.uk\/licenseverse\/#organization","name":"LicenseVerse","url":"https:\/\/www.licensingschool.co.uk\/licenseverse\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.licensingschool.co.uk\/licenseverse\/#\/schema\/logo\/image\/","url":"https:\/\/www.licensingschool.co.uk\/licenseverse\/wp-content\/uploads\/sites\/4\/2023\/10\/Licensing-Verse_101023-01.png","contentUrl":"https:\/\/www.licensingschool.co.uk\/licenseverse\/wp-content\/uploads\/sites\/4\/2023\/10\/Licensing-Verse_101023-01.png","width":906,"height":394,"caption":"LicenseVerse"},"image":{"@id":"https:\/\/www.licensingschool.co.uk\/licenseverse\/#\/schema\/logo\/image\/"}}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/www.licensingschool.co.uk\/licenseverse\/wp-json\/wp\/v2\/lessons\/8446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.licensingschool.co.uk\/licenseverse\/wp-json\/wp\/v2\/lessons"}],"about":[{"href":"https:\/\/www.licensingschool.co.uk\/licenseverse\/wp-json\/wp\/v2\/types\/lessons"}],"version-history":[{"count":3,"href":"https:\/\/www.licensingschool.co.uk\/licenseverse\/wp-json\/wp\/v2\/lessons\/8446\/revisions"}],"predecessor-version":[{"id":12074,"href":"https:\/\/www.licensingschool.co.uk\/licenseverse\/wp-json\/wp\/v2\/lessons\/8446\/revisions\/12074"}],"wp:attachment":[{"href":"https:\/\/www.licensingschool.co.uk\/licenseverse\/wp-json\/wp\/v2\/media?parent=8446"}],"wp:term":[{"taxonomy":"lesson_category","embeddable":true,"href":"https:\/\/www.licensingschool.co.uk\/licenseverse\/wp-json\/wp\/v2\/lesson_category?post=8446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}