CINXE.COM

Microsoft 365 Roadmap | Microsoft 365

<!DOCTYPE HTML> <html lang="en-US" dir="ltr"> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/> <meta http-equiv="x-ua-compatible" content="ie=edge"/> <script defer="defer" type="text/javascript" src="https://rum.hlx.page/.rum/@adobe/helix-rum-js@%5E2/dist/rum-standalone.js" data-routing="p00000-e000000"></script> <link rel="SHORTCUT ICON" href="/favicon.ico?v2" type="image/x-icon"/> <meta name="robots" content="index, follow"/> <meta name="template" content="reimagine---roadmap-template"/> <meta name="awa-canvasType" content="web"/> <meta name="awa-isTented" content="false"/> <meta name="awa-pgtmp" content="reimagine---roadmap-template"/> <meta name="awa-pageType" content="Microsoft 365"/> <meta name="awa-market" content="en-us"/> <meta name="awa-cms" content="AEM"/> <meta name="awa-enabledFeatures" content="contentbackfillgenerate;esiproductcards;feature-controlled-mwf;uhf-ms-io-endpoint;uhf-esi-cv;uhf-esi-cache;contentsquare;mediapixel;holiday-themer;lazyload-static-components;clientlibDefer;upsellEnabled;contentbackfillpkgdelete;healthcheck;contentbackfillhttpgenerate;perf-tracker-1ds;dynamic-bundle;cvIncrementer;tentingEnabled;chatCookiesImplemented;alertCountDownWithoutServerTime;pdpDynamicRendering;bundlesDynamicRendering;contentbackfillmetadatachangesvideo;contentbackfillmetadatachangesnonvideo;listDynamicRendering;experimentation-without-personalization;generic-list-importer;combinedUHF;cvCallEnabled;m365ProductCatalog;support-unsupported-locales;deferClickTale;videoLazyLoad;prefetchFontsEnabled;enable-code-isolation;imageLinkTag;fetchPriority;contentIngestionAgent;enableClickgroupTelemetry;imageLazyLoad;contentIngestionAgent-dispatcher2westus2Agent;isCacheControlFeatureEnabled;feature-controlled-content-card;lcpPrioritizationPhase1;ocReimagineTelemetry;deferScriptsEnabled;lcpPrioritizationPhase2;ocReimagineSlotNumberTelemetry;contentIngestionAgent-dispatcher1westus2Agent;ocReimagineComponentNameTelemetry;ocReimagineTemplateNameTelemetry;ptePhase1;extended-html-minification-sites;dynamicPrice;gl-auto-config;displayV35Toggle;chatCustomEndpoint;enableBoostPersonalization;ocReimagineTelemetryTemplateNameSwap;enableEmailConnector;enable-eventingService;ocReimagineAIAssistant;acsPMEFeatureEnabled;ocReimagineCustomerApiUrl;ocReimagineCustomerFilterApiUrl;email-FigmaEmailAutomation;storeVideoUmp;ocProductPricePrimaryLocale;entertainmentEW"/> <title>Microsoft 365 Roadmap | Microsoft 365</title> <link rel="canonical" href="https://www.microsoft.com/en-us/microsoft-365/roadmap"/> <meta name="twitter:url" content="https://www.microsoft.com/en-us/microsoft-365/roadmap"/> <meta name="twitter:title" content="Microsoft 365 Roadmap | Microsoft 365"/> <meta name="twitter:card" content="summary"/> <meta property="og:url" content="https://www.microsoft.com/en-us/microsoft-365/roadmap"/> <meta property="og:title" content="Microsoft 365 Roadmap | Microsoft 365"/> <meta property="og:type" content="website"/> <link rel="stylesheet" href="/etc.clientlibs/onecloud/clientlibs/clientlib-mwf-new/main-light.min.ACSHASH561c834597fb9bc5aac4021e21e006be.css" type="text/css"> <link rel="stylesheet" href="/etc.clientlibs/onecloud/clientlibs/clientlib-reimagine/main-m365.min.ACSHASHf292827a4b231181547342e2f8400eb8.css" type="text/css"> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-vars/publisher.min.ACSHASHd04116a7de4f2a26cdce768dfe83c5b0.js"></script> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-onecloud-util.min.ACSHASH1c7e214f5af8caa06f783a38d40127c6.js"></script> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-mwf-new/main-light.min.ACSHASH3cb55a1b7e29cabded7d23377524b55e.js"></script> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-reimagine/main-light.min.ACSHASH32dd62b572dc995fc6521b9b21b1c42d.js"></script> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-events.min.ACSHASH7677f65c1626ab1bde509437776d4291.js"></script> <link rel="stylesheet" href="/etc.clientlibs/cascade.component.authoring/clientlibs/clientlib-uhf.min.ACSHASHf9f2395c582fa601707b7a5dfae9f05f.css" type="text/css"> <link rel="stylesheet" href="/etc.clientlibs/onecloud/clientlibs/clientlib-action.min.ACSHASH44700d76f3f63fa33f30039bb9c74b39.css" type="text/css"> <link rel="stylesheet" href="/etc.clientlibs/onecloud/clientlibs/clientlib-reimagine-page/clientlib-aem-styles.min.ACSHASHd66c468f4ca17e83ccd97a4518b3e814.css" type="text/css"> <link rel="stylesheet" href="/etc.clientlibs/onecloud/clientlibs/clientlib-wc-themes/m365.min.ACSHASH82f8e3f7283d339d72ee676a99a2225e.css" type="text/css"> <link rel="stylesheet" href="/etc.clientlibs/cascade.component.authoring/clientlibs/clientlib-web-components/styles.min.ACSHASH5d4139849f1f1b7eaa11c7883d5441dd.css" type="text/css"> <script>oc.geo.country = "SG";</script> <script id="ie11-polyfill-script"> var isModernBrowser = ( 'fetch' in window && 'assign' in Object ); if ( !isModernBrowser ) { var scriptElement = document.createElement('script'); scriptElement.async = false; scriptElement.src = '/etc.clientlibs/cascade.component.authoring/clientlibs/clientlib-polyfills/resources/ie11-polyfills.js'; var polyfillScriptElement = document.querySelector('#ie11-polyfill-script'); if (polyfillScriptElement) { polyfillScriptElement.parentNode.insertBefore(scriptElement, polyfillScriptElement.nextSibling); } } </script> <script src="/etc.clientlibs/cascade.component.authoring/clientlibs/clientlib-polyfills.min.ACSHASHf381d5147c85ee687ea8fbef32c83d37.js"></script> <script src="/etc.clientlibs/cascade.component.authoring/clientlibs/clientlib-jquery.min.ACSHASH35986a813756f39ab6b922979ffedb03.js"></script> <script src="/etc.clientlibs/cascade.component.authoring/clientlibs/clientlib-jquery-cookie.min.ACSHASH20aafdf6904d3dc5db0e0e33abbfc1a4.js"></script> <script src="/etc.clientlibs/microsoft/clientlibs/exp-analytics/v1.min.ACSHASH4cffc2c9b55f8bde649e0d2535a1eebd.js"></script> <script type="text/javascript"> var expToken = { "exp": { "target": { "propertyToken": "3c148cf5-9769-f782-32c4-14f7eba5d269", "visitorJsHash": "30368a72d017e4133bfd3b5d073d06ff", "expJsHash": "895e2a12062f1ee44d7d72d266904bde", "isExpWithoutPersonalizationEnabled": ("false"==="true") } } }; window.cas = expToken; </script> <meta name="cas-exp-visitor" content="/etc.clientlibs/microsoft/components/structure/page/clientlibs/visitor.min.ACSHASH30368a72d017e4133bfd3b5d073d06ff.js"><meta name="cas-exp-visitor" content="/etc.clientlibs/cascade.component.authoring/components/structure/cascade-page/clientlibs/visitor.min.ACSHASH30368a72d017e4133bfd3b5d073d06ff.js"> <meta name="cas-exp-at" content="/etc.clientlibs/microsoft/components/structure/page/clientlibs/experimentation.min.ACSHASH895e2a12062f1ee44d7d72d266904bde.js"><meta name="cas-exp-at" content="/etc.clientlibs/cascade.component.authoring/components/structure/cascade-page/clientlibs/experimentation.min.ACSHASH895e2a12062f1ee44d7d72d266904bde.js"> <script type="text/javascript" src="/etc.clientlibs/microsoft/clientlibs/exp-cookiecomp/v1.min.ACSHASHbe3f2a9f6a41fc40556efe260fc861a5.js" async></script> <meta name="exp-visitor-anchor" content=""/> <meta name="exp-atjs-anchor" content=""/> <link id="onecloud-head-style" href="/msonecloudapi/assets/msochead.css" type="text/css" rel="stylesheet"/> <script id="onecloud-head-script" type="text/javascript" src="/msonecloudapi/assets/msochead.js" async></script> <script type="text/javascript" src="/msonecloudapi/assets/ocv-feedback.js" async></script> <script type="text/javascript" async src="https://play.vidyard.com/embed/v4.js"></script> <meta name="oc-version" content="reimagine"/> <script src="/etc.clientlibs/cascade.component.authoring/dynamicclientsidelibs/handlerscripts/v1.min.ACSHASHd7106db242c2b41f88a1b02418bec7e2.js"></script> </head> <body class="reimagine-page page basicpage"> <div data-geo-country="SG"> <span style="display:none"> <script> window.mscv = 'CASMicrosoftCVb4ddefeb.0' </script> <script> window.msservercv = 'CASMicrosoftCVb4ddefeb.0' </script> Trace Id is missing <script> window.traceid = undefined; </script> </span> <script type="text/javascript"> window.msauthIsPublisher = true; </script> <span aria-hidden="true" class="d-none geo-info" data-continent="AS" data-country_code="SG" data-region_code="" data-city="SINGAPORE" data-timezone="GMT+8" data-zip="" data-county="" data-areacode=""> </span> <div id="page-top" tabindex="-1"></div> <div id="modalsRenderedAfterPageLoad"> </div> <div class="root responsivegrid"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="universalheader aem-GridColumn aem-GridColumn--default--12" data-component-id="cf9a86dceae618e01d6e6399d243873c"> <link rel="stylesheet" href="/etc.clientlibs/microsoft/components/content/universalheader/v1/universalheader/clientlibs/site.min.ACSHASHa8a3710424dc6e0dff393c6964441bdb.css" type="text/css"> <link rel="stylesheet" href="https://www.microsoft.com/onerfstatics/marketingsites-eas-prod/west-european/shell/_scrf/css/themes=default.device=uplevel_web_pc/60-6a98d7/c9-be0100/a6-e969ef/43-9f2e7c/82-8b5456/a0-5d3913/84-6d4f33/ae-f1ac0c?ver=2.0&amp;_cf=02242021_3231" type="text/css" media="all" /> <div id="headerArea" class="uhf" data-m='{"cN":"headerArea","cT":"Area_coreuiArea","id":"a1Body","sN":1,"aN":"Body"}'> <div id="headerRegion" data-region-key="headerregion" data-m='{"cN":"headerRegion","cT":"Region_coreui-region","id":"r1a1","sN":1,"aN":"a1"}' > <div id="headerUniversalHeader" data-m='{"cN":"headerUniversalHeader","cT":"Module_coreui-universalheader","id":"m1r1a1","sN":1,"aN":"r1a1"}' data-module-id="Category|headerRegion|coreui-region|headerUniversalHeader|coreui-universalheader"> <div data-m='{"cN":"cookiebanner_cont","cT":"Container","id":"c1m1r1a1","sN":1,"aN":"m1r1a1"}'> <div id="uhfCookieAlert" data-locale="en-us"> <div id="msccBannerV2"></div> </div> </div> <a id="uhfSkipToMain" class="m-skip-to-main" href="javascript:void(0)" data-href="#mainContent" tabindex="0" data-m='{"cN":"Skip to content_nonnav","id":"nn2m1r1a1","sN":2,"aN":"m1r1a1"}'>Skip to main content</a> <header class="c-uhfh context-uhf no-js c-sgl-stck c-category-header " itemscope="itemscope" data-header-footprint="/OfficeProducts/m365-globalnavheader, fromService: True" data-magict="true" itemtype="http://schema.org/Organization"> <div class="theme-light js-global-head f-closed global-head-cont" data-m='{"cN":"Universal Header_cont","cT":"Container","id":"c3m1r1a1","sN":3,"aN":"m1r1a1"}'> <div class="c-uhfh-gcontainer-st"> <button type="button" class="c-action-trigger c-glyph glyph-global-nav-button" aria-label="All Microsoft expand to see list of Microsoft products and services" initialState-label="All Microsoft expand to see list of Microsoft products and services" toggleState-label="Close All Microsoft list" aria-expanded="false" data-m='{"cN":"Mobile menu button_nonnav","id":"nn1c3m1r1a1","sN":1,"aN":"c3m1r1a1"}'></button> <button type="button" class="c-action-trigger c-glyph glyph-arrow-htmllegacy c-close-search" aria-label="Close search" aria-expanded="false" data-m='{"cN":"Close Search_nonnav","id":"nn2c3m1r1a1","sN":2,"aN":"c3m1r1a1"}'></button> <a id="uhfLogo" class="c-logo c-sgl-stk-uhfLogo" itemprop="url" href="https://www.microsoft.com" aria-label="Microsoft" data-m='{"cN":"GlobalNav_Logo_cont","cT":"Container","id":"c3c3m1r1a1","sN":3,"aN":"c3m1r1a1"}'> <img alt="" itemprop="logo" class="c-image" src="https://uhf.microsoft.com/images/microsoft/RE1Mu3b.png" role="presentation" aria-hidden="true" /> <span itemprop="name" role="presentation" aria-hidden="true">Microsoft</span> </a> <div class="f-mobile-title"> <button type="button" class="c-action-trigger c-glyph glyph-chevron-left" aria-label="See more menu options" data-m='{"cN":"Mobile back button_nonnav","id":"nn4c3m1r1a1","sN":4,"aN":"c3m1r1a1"}'></button> <span data-global-title="Microsoft home" class="js-mobile-title">Microsoft 365</span> <button type="button" class="c-action-trigger c-glyph glyph-chevron-right" aria-label="See more menu options" data-m='{"cN":"Mobile forward button_nonnav","id":"nn5c3m1r1a1","sN":5,"aN":"c3m1r1a1"}'></button> </div> <div class="c-show-pipe x-hidden-vp-mobile-st"> <a id="uhfCatLogo" class="c-logo c-cat-logo" href="https://www.microsoft.com/en-us/microsoft-365" aria-label="Microsoft 365" itemprop="url" data-m='{"cN":"CatNav_Microsoft 365_nav","id":"n6c3m1r1a1","sN":6,"aN":"c3m1r1a1"}'> <span>Microsoft 365</span> </a> </div> <div class="cat-logo-button-cont x-hidden"> <button type="button" id="uhfCatLogoButton" class="c-cat-logo-button x-hidden" aria-expanded="false" aria-label="Microsoft 365" data-m='{"cN":"Microsoft 365_nonnav","id":"nn7c3m1r1a1","sN":7,"aN":"c3m1r1a1"}'> Microsoft 365 </button> </div> <nav id="uhf-g-nav" aria-label="Contextual menu" class="c-uhfh-gnav" data-m='{"cN":"Category nav_cont","cT":"Container","id":"c8c3m1r1a1","sN":8,"aN":"c3m1r1a1"}'> <ul class="js-paddle-items"> <li class="single-link js-nav-menu x-hidden-none-mobile-vp uhf-menu-item"> <a class="c-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365" data-m='{"cN":"CatNav_Home_nav","id":"n1c8c3m1r1a1","sN":1,"aN":"c8c3m1r1a1"}' > Home </a> </li> <li class="nested-menu uhf-menu-item"> <div class="c-uhf-menu js-nav-menu"> <button type="button" id="c-shellmenu_0" aria-expanded="false" data-m='{"cN":"CatNav_Products_nonnav","id":"nn2c8c3m1r1a1","sN":2,"aN":"c8c3m1r1a1"}'>Products</button> <ul class="f-multi-column f-multi-column-6" data-class-idn="f-multi-column f-multi-column-6" aria-hidden="true" data-m='{"cN":"Products_cont","cT":"Container","id":"c3c8c3m1r1a1","sN":3,"aN":"c8c3m1r1a1"}'> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c1c3c8c3m1r1a1","sN":1,"aN":"c3c8c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_1-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c1c3c8c3m1r1a1","sN":1,"aN":"c1c3c8c3m1r1a1"}'>For home</span> <button id="uhf-navbtn-shellmenu_1-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c1c3c8c3m1r1a1","sN":2,"aN":"c1c3c8c3m1r1a1"}'>For home</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_1-span"> <li class="js-nav-menu single-link" data-m='{"cN":"Pricing for home_cont","cT":"Container","id":"c3c1c3c8c3m1r1a1","sN":3,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_2" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/buy/compare-all-microsoft-365-products" data-m='{"cN":"CatNav_Pricing for home_nav","id":"n1c3c1c3c8c3m1r1a1","sN":1,"aN":"c3c1c3c8c3m1r1a1"}'>Pricing for home</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"For families_cont","cT":"Container","id":"c4c1c3c8c3m1r1a1","sN":4,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_3" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/p/microsoft-365-family/cfq7ttc0k5dm" data-m='{"cN":"CatNav_For families_nav","id":"n1c4c1c3c8c3m1r1a1","sN":1,"aN":"c4c1c3c8c3m1r1a1"}'>For families</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"For individuals_cont","cT":"Container","id":"c5c1c3c8c3m1r1a1","sN":5,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_4" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/p/microsoft-365-personal/cfq7ttc0k5bf" data-m='{"cN":"CatNav_For individuals_nav","id":"n1c5c1c3c8c3m1r1a1","sN":1,"aN":"c5c1c3c8c3m1r1a1"}'>For individuals</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"For students_cont","cT":"Container","id":"c6c1c3c8c3m1r1a1","sN":6,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_5" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/education/products/office" data-m='{"cN":"CatNav_For students_nav","id":"n1c6c1c3c8c3m1r1a1","sN":1,"aN":"c6c1c3c8c3m1r1a1"}'>For students</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"See all home_cont","cT":"Container","id":"c7c1c3c8c3m1r1a1","sN":7,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_6" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/explore-microsoft-365-for-home" data-m='{"cN":"CatNav_See all home_nav","id":"n1c7c1c3c8c3m1r1a1","sN":1,"aN":"c7c1c3c8c3m1r1a1"}'>See all home</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c2c3c8c3m1r1a1","sN":2,"aN":"c3c8c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_7-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c2c3c8c3m1r1a1","sN":1,"aN":"c2c3c8c3m1r1a1"}'>For business</span> <button id="uhf-navbtn-shellmenu_7-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c2c3c8c3m1r1a1","sN":2,"aN":"c2c3c8c3m1r1a1"}'>For business</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_7-span"> <li class="js-nav-menu single-link" data-m='{"cN":"Pricing for business_cont","cT":"Container","id":"c3c2c3c8c3m1r1a1","sN":3,"aN":"c2c3c8c3m1r1a1"}'> <a id="shellmenu_8" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/business/compare-all-microsoft-365-business-products?&amp;activetab=tab:primaryr2" data-m='{"cN":"CatNav_Pricing for business_nav","id":"n1c3c2c3c8c3m1r1a1","sN":1,"aN":"c3c2c3c8c3m1r1a1"}'>Pricing for business</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"For small business_cont","cT":"Container","id":"c4c2c3c8c3m1r1a1","sN":4,"aN":"c2c3c8c3m1r1a1"}'> <a id="shellmenu_9" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/business" data-m='{"cN":"CatNav_For small business_nav","id":"n1c4c2c3c8c3m1r1a1","sN":1,"aN":"c4c2c3c8c3m1r1a1"}'>For small business</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c3c3c8c3m1r1a1","sN":3,"aN":"c3c8c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_10-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c3c3c8c3m1r1a1","sN":1,"aN":"c3c3c8c3m1r1a1"}'>For enterprise</span> <button id="uhf-navbtn-shellmenu_10-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c3c3c8c3m1r1a1","sN":2,"aN":"c3c3c8c3m1r1a1"}'>For enterprise</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_10-span"> <li class="js-nav-menu single-link" data-m='{"cN":"Pricing for enterprise_cont","cT":"Container","id":"c3c3c3c8c3m1r1a1","sN":3,"aN":"c3c3c8c3m1r1a1"}'> <a id="shellmenu_11" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/enterprise/microsoft365-plans-and-pricing" data-m='{"cN":"CatNav_Pricing for enterprise_nav","id":"n1c3c3c3c8c3m1r1a1","sN":1,"aN":"c3c3c3c8c3m1r1a1"}'>Pricing for enterprise</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"For enterprise_cont","cT":"Container","id":"c4c3c3c8c3m1r1a1","sN":4,"aN":"c3c3c8c3m1r1a1"}'> <a id="shellmenu_12" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/microsoft-365-enterprise" data-m='{"cN":"CatNav_For enterprise_nav","id":"n1c4c3c3c8c3m1r1a1","sN":1,"aN":"c4c3c3c8c3m1r1a1"}'>For enterprise</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"For frontline workers_cont","cT":"Container","id":"c5c3c3c8c3m1r1a1","sN":5,"aN":"c3c3c8c3m1r1a1"}'> <a id="shellmenu_13" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/enterprise/frontline" data-m='{"cN":"CatNav_For frontline workers_nav","id":"n1c5c3c3c8c3m1r1a1","sN":1,"aN":"c5c3c3c8c3m1r1a1"}'>For frontline workers</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c4c3c8c3m1r1a1","sN":4,"aN":"c3c8c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_14-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c4c3c8c3m1r1a1","sN":1,"aN":"c4c3c8c3m1r1a1"}'>Apps and services</span> <button id="uhf-navbtn-shellmenu_14-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c4c3c8c3m1r1a1","sN":2,"aN":"c4c3c8c3m1r1a1"}'>Apps and services</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_14-span"> <li class="js-nav-menu single-link" data-m='{"cN":"Microsoft 365 Copilot_cont","cT":"Container","id":"c3c4c3c8c3m1r1a1","sN":3,"aN":"c4c3c8c3m1r1a1"}'> <a id="shellmenu_15" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/copilot" data-m='{"cN":"CatNav_Microsoft 365 Copilot_nav","id":"n1c3c4c3c8c3m1r1a1","sN":1,"aN":"c3c4c3c8c3m1r1a1"}'>Microsoft 365 Copilot</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Excel_cont","cT":"Container","id":"c4c4c3c8c3m1r1a1","sN":4,"aN":"c4c3c8c3m1r1a1"}'> <a id="shellmenu_16" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/excel" data-m='{"cN":"CatNav_Excel_nav","id":"n1c4c4c3c8c3m1r1a1","sN":1,"aN":"c4c4c3c8c3m1r1a1"}'>Excel</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Microsoft Teams_cont","cT":"Container","id":"c5c4c3c8c3m1r1a1","sN":5,"aN":"c4c3c8c3m1r1a1"}'> <a id="shellmenu_17" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-teams/group-chat-software" data-m='{"cN":"CatNav_Microsoft Teams_nav","id":"n1c5c4c3c8c3m1r1a1","sN":1,"aN":"c5c4c3c8c3m1r1a1"}'>Microsoft Teams</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Word_cont","cT":"Container","id":"c6c4c3c8c3m1r1a1","sN":6,"aN":"c4c3c8c3m1r1a1"}'> <a id="shellmenu_18" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/word" data-m='{"cN":"CatNav_Word_nav","id":"n1c6c4c3c8c3m1r1a1","sN":1,"aN":"c6c4c3c8c3m1r1a1"}'>Word</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"OneDrive_cont","cT":"Container","id":"c7c4c3c8c3m1r1a1","sN":7,"aN":"c4c3c8c3m1r1a1"}'> <a id="shellmenu_19" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage" data-m='{"cN":"CatNav_OneDrive_nav","id":"n1c7c4c3c8c3m1r1a1","sN":1,"aN":"c7c4c3c8c3m1r1a1"}'>OneDrive</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Outlook_cont","cT":"Container","id":"c8c4c3c8c3m1r1a1","sN":8,"aN":"c4c3c8c3m1r1a1"}'> <a id="shellmenu_20" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook" data-m='{"cN":"CatNav_Outlook_nav","id":"n1c8c4c3c8c3m1r1a1","sN":1,"aN":"c8c4c3c8c3m1r1a1"}'>Outlook</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"PowerPoint_cont","cT":"Container","id":"c9c4c3c8c3m1r1a1","sN":9,"aN":"c4c3c8c3m1r1a1"}'> <a id="shellmenu_21" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/powerpoint" data-m='{"cN":"CatNav_PowerPoint_nav","id":"n1c9c4c3c8c3m1r1a1","sN":1,"aN":"c9c4c3c8c3m1r1a1"}'>PowerPoint</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Project_cont","cT":"Container","id":"c10c4c3c8c3m1r1a1","sN":10,"aN":"c4c3c8c3m1r1a1"}'> <a id="shellmenu_22" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/project/project-management-software" data-m='{"cN":"CatNav_Project_nav","id":"n1c10c4c3c8c3m1r1a1","sN":1,"aN":"c10c4c3c8c3m1r1a1"}'>Project</a> </li> <li class="js-nav-menu single-link" data-m='{"cT":"Container","id":"c11c4c3c8c3m1r1a1","sN":11,"aN":"c4c3c8c3m1r1a1"}'> <a id="shellmenu_23" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/sharepoint/collaboration" data-m='{"id":"n1c11c4c3c8c3m1r1a1","sN":1,"aN":"c11c4c3c8c3m1r1a1"}'>SharePoint</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"See all apps and services_cont","cT":"Container","id":"c12c4c3c8c3m1r1a1","sN":12,"aN":"c4c3c8c3m1r1a1"}'> <a id="shellmenu_24" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/products-apps-services" data-m='{"cN":"CatNav_See all apps and services_nav","id":"n1c12c4c3c8c3m1r1a1","sN":1,"aN":"c12c4c3c8c3m1r1a1"}'>See all apps and services</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cN":"More_cont","cT":"Container","id":"c5c3c8c3m1r1a1","sN":5,"aN":"c3c8c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_25-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"cN":"CatNav_More_nonnav","id":"nn1c5c3c8c3m1r1a1","sN":1,"aN":"c5c3c8c3m1r1a1"}'>More</span> <button id="uhf-navbtn-shellmenu_25-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"cN":"CatNav_More_nonnav","id":"nn2c5c3c8c3m1r1a1","sN":2,"aN":"c5c3c8c3m1r1a1"}'>More</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_25-span"> <li class="js-nav-menu single-link" data-m='{"cN":"Microsoft Office_cont","cT":"Container","id":"c3c5c3c8c3m1r1a1","sN":3,"aN":"c5c3c8c3m1r1a1"}'> <a id="shellmenu_26" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/microsoft-office" data-m='{"cN":"CatNav_Microsoft Office_nav","id":"n1c3c5c3c8c3m1r1a1","sN":1,"aN":"c3c5c3c8c3m1r1a1"}'>Microsoft Office</a> </li> <li class="js-nav-menu single-link" data-m='{"cT":"Container","id":"c4c5c3c8c3m1r1a1","sN":4,"aN":"c5c3c8c3m1r1a1"}'> <a id="shellmenu_27" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/windows-365" data-m='{"id":"n1c4c5c3c8c3m1r1a1","sN":1,"aN":"c4c5c3c8c3m1r1a1"}'>Windows 365</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Microsoft Viva_cont","cT":"Container","id":"c5c5c3c8c3m1r1a1","sN":5,"aN":"c5c3c8c3m1r1a1"}'> <a id="shellmenu_28" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-viva" data-m='{"cN":"CatNav_Microsoft Viva_nav","id":"n1c5c5c3c8c3m1r1a1","sN":1,"aN":"c5c5c3c8c3m1r1a1"}'>Microsoft Viva</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Microsoft Authenticator_cont","cT":"Container","id":"c6c5c3c8c3m1r1a1","sN":6,"aN":"c5c3c8c3m1r1a1"}'> <a id="shellmenu_29" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/security/mobile-authenticator-app" data-m='{"cN":"CatNav_Microsoft Authenticator_nav","id":"n1c6c5c3c8c3m1r1a1","sN":1,"aN":"c6c5c3c8c3m1r1a1"}'>Microsoft Authenticator</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Microsoft Edge_cont","cT":"Container","id":"c7c5c3c8c3m1r1a1","sN":7,"aN":"c5c3c8c3m1r1a1"}'> <a id="shellmenu_30" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/edge" data-m='{"cN":"CatNav_Microsoft Edge_nav","id":"n1c7c5c3c8c3m1r1a1","sN":1,"aN":"c7c5c3c8c3m1r1a1"}'>Microsoft Edge</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"For Nonprofits_cont","cT":"Container","id":"c8c5c3c8c3m1r1a1","sN":8,"aN":"c5c3c8c3m1r1a1"}'> <a id="shellmenu_31" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/enterprise/nonprofit-plans-and-pricing" data-m='{"cN":"CatNav_For Nonprofits_nav","id":"n1c8c5c3c8c3m1r1a1","sN":1,"aN":"c8c5c3c8c3m1r1a1"}'>For Nonprofits</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"For Schools_cont","cT":"Container","id":"c9c5c3c8c3m1r1a1","sN":9,"aN":"c5c3c8c3m1r1a1"}'> <a id="shellmenu_32" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/education/products/microsoft-365" data-m='{"cN":"CatNav_For Schools_nav","id":"n1c9c5c3c8c3m1r1a1","sN":1,"aN":"c9c5c3c8c3m1r1a1"}'>For Schools</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cN":"What鈥檚 new_cont","cT":"Container","id":"c6c3c8c3m1r1a1","sN":6,"aN":"c3c8c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_33-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"cN":"CatNav_What鈥檚 new_nonnav","id":"nn1c6c3c8c3m1r1a1","sN":1,"aN":"c6c3c8c3m1r1a1"}'>What鈥檚 new</span> <button id="uhf-navbtn-shellmenu_33-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"cN":"CatNav_What鈥檚 new_nonnav","id":"nn2c6c3c8c3m1r1a1","sN":2,"aN":"c6c3c8c3m1r1a1"}'>What鈥檚 new</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_33-span"> <li class="js-nav-menu single-link" data-m='{"cN":"Microsoft Places_cont","cT":"Container","id":"c3c6c3c8c3m1r1a1","sN":3,"aN":"c6c3c8c3m1r1a1"}'> <a id="shellmenu_34" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-teams/microsoft-places" data-m='{"cN":"CatNav_Microsoft Places_nav","id":"n1c3c6c3c8c3m1r1a1","sN":1,"aN":"c3c6c3c8c3m1r1a1"}'>Microsoft Places</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Microsoft Designer_cont","cT":"Container","id":"c4c6c3c8c3m1r1a1","sN":4,"aN":"c6c3c8c3m1r1a1"}'> <a id="shellmenu_35" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/microsoft-designer" data-m='{"cN":"CatNav_Microsoft Designer_nav","id":"n1c4c6c3c8c3m1r1a1","sN":1,"aN":"c4c6c3c8c3m1r1a1"}'>Microsoft Designer</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Planner_cont","cT":"Container","id":"c5c6c3c8c3m1r1a1","sN":5,"aN":"c6c3c8c3m1r1a1"}'> <a id="shellmenu_36" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/planner/microsoft-planner" data-m='{"cN":"CatNav_Planner_nav","id":"n1c5c6c3c8c3m1r1a1","sN":1,"aN":"c5c6c3c8c3m1r1a1"}'>Planner</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Clipchamp_cont","cT":"Container","id":"c6c6c3c8c3m1r1a1","sN":6,"aN":"c6c3c8c3m1r1a1"}'> <a id="shellmenu_37" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/clipchamp" data-m='{"cN":"CatNav_Clipchamp_nav","id":"n1c6c6c3c8c3m1r1a1","sN":1,"aN":"c6c6c3c8c3m1r1a1"}'>Clipchamp</a> </li> </ul> </li> </ul> </div> </li> <li class="single-link js-nav-menu uhf-menu-item"> <a id="c-shellmenu_38" class="c-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/business/compare-all-microsoft-365-business-products" data-m='{"id":"n4c8c3m1r1a1","sN":4,"aN":"c8c3m1r1a1"}'>Plans and pricing</a> </li> <li class="nested-menu uhf-menu-item"> <div class="c-uhf-menu js-nav-menu"> <button type="button" id="c-shellmenu_39" aria-expanded="false" data-m='{"id":"nn5c8c3m1r1a1","sN":5,"aN":"c8c3m1r1a1"}'>Resources</button> <ul class="" data-class-idn="" aria-hidden="true" data-m='{"cT":"Container","id":"c6c8c3m1r1a1","sN":6,"aN":"c8c3m1r1a1"}'> <li class="js-nav-menu single-link" data-m='{"cN":"Start your Copilot journey_cont","cT":"Container","id":"c1c6c8c3m1r1a1","sN":1,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_40" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/copilot/meet-copilot" data-m='{"cN":"CatNav_Start your Copilot journey_nav","id":"n1c1c6c8c3m1r1a1","sN":1,"aN":"c1c6c8c3m1r1a1"}'>Start your Copilot journey</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Copilot for work_cont","cT":"Container","id":"c2c6c8c3m1r1a1","sN":2,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_41" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/copilot/copilot-for-work" data-m='{"cN":"CatNav_Copilot for work_nav","id":"n1c2c6c8c3m1r1a1","sN":1,"aN":"c2c6c8c3m1r1a1"}'>Copilot for work</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Cost savings_cont","cT":"Container","id":"c3c6c8c3m1r1a1","sN":3,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_42" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/enterprise/do-more-with-less" data-m='{"cN":"CatNav_Cost savings_nav","id":"n1c3c6c8c3m1r1a1","sN":1,"aN":"c3c6c8c3m1r1a1"}'>Cost savings</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Accounts and billing_cont","cT":"Container","id":"c4c6c8c3m1r1a1","sN":4,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_43" class="js-subm-uhf-nav-link" href="https://support.office.com/en-us/article/accounts-in-office-628ea040-f265-49de-b986-be09c3ebf8a9" data-m='{"cN":"CatNav_Accounts and billing_nav","id":"n1c4c6c8c3m1r1a1","sN":1,"aN":"c4c6c8c3m1r1a1"}'>Accounts and billing</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"FAQ_cont","cT":"Container","id":"c5c6c8c3m1r1a1","sN":5,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_44" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/microsoft-365-for-home-and-school-faq" data-m='{"cN":"CatNav_FAQ_nav","id":"n1c5c6c8c3m1r1a1","sN":1,"aN":"c5c6c8c3m1r1a1"}'>FAQ</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Setup and install_cont","cT":"Container","id":"c6c6c8c3m1r1a1","sN":6,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_45" class="js-subm-uhf-nav-link" href="https://go.microsoft.com/fwlink/?linkid=2268122" data-m='{"cN":"CatNav_Setup and install_nav","id":"n1c6c6c8c3m1r1a1","sN":1,"aN":"c6c6c8c3m1r1a1"}'>Setup and install</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Templates_cont","cT":"Container","id":"c7c6c8c3m1r1a1","sN":7,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_46" class="js-subm-uhf-nav-link" href="https://templates.office.com" data-m='{"cN":"CatNav_Templates_nav","id":"n1c7c6c8c3m1r1a1","sN":1,"aN":"c7c6c8c3m1r1a1"}'>Templates</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Training_cont","cT":"Container","id":"c8c6c8c3m1r1a1","sN":8,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_47" class="js-subm-uhf-nav-link" href="https://go.microsoft.com/fwlink/?linkid=2268123" data-m='{"cN":"CatNav_Training_nav","id":"n1c8c6c8c3m1r1a1","sN":1,"aN":"c8c6c8c3m1r1a1"}'>Training</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Whats new_cont","cT":"Container","id":"c9c6c8c3m1r1a1","sN":9,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_48" class="js-subm-uhf-nav-link" href="https://support.office.com/en-us/article/what-s-new-in-office-365-95c8d81d-08ba-42c1-914f-bca4603e1426?ui=en-US&amp;rs=en-US&amp;ad=US" data-m='{"cN":"CatNav_Whats new_nav","id":"n1c9c6c8c3m1r1a1","sN":1,"aN":"c9c6c8c3m1r1a1"}'>What&#39;s new</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Small Business Resource Center_cont","cT":"Container","id":"c10c6c8c3m1r1a1","sN":10,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_49" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/small-business-resource-center" data-m='{"cN":"CatNav_Small Business Resource Center_nav","id":"n1c10c6c8c3m1r1a1","sN":1,"aN":"c10c6c8c3m1r1a1"}'>Small Business Resource Center</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Shared calendar_cont","cT":"Container","id":"c11c6c8c3m1r1a1","sN":11,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_50" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/outlook/calendar-app" data-m='{"cN":"CatNav_Shared calendar_nav","id":"n1c11c6c8c3m1r1a1","sN":1,"aN":"c11c6c8c3m1r1a1"}'>Shared calendar</a> </li> </ul> </div> </li> <li class="nested-menu uhf-menu-item"> <div class="c-uhf-menu js-nav-menu"> <button type="button" id="c-shellmenu_51" aria-expanded="false" data-m='{"cN":"CatNav_Support_nonnav","id":"nn7c8c3m1r1a1","sN":7,"aN":"c8c3m1r1a1"}'>Support</button> <ul class="" data-class-idn="" aria-hidden="true" data-m='{"cN":"Support_cont","cT":"Container","id":"c8c8c3m1r1a1","sN":8,"aN":"c8c3m1r1a1"}'> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cN":"For personal and family_cont","cT":"Container","id":"c1c8c8c3m1r1a1","sN":1,"aN":"c8c8c3m1r1a1"}'> <span id="uhf-navspn-c-shellmenu_52-span" style="display:none" aria-expanded="false" data-m='{"cN":"CatNav_For personal and family_nonnav","id":"nn1c1c8c8c3m1r1a1","sN":1,"aN":"c1c8c8c3m1r1a1"}'>For personal and family</span> <button id="uhf-navbtn-c-shellmenu_52-button" type="button" aria-expanded="false" data-m='{"cN":"CatNav_For personal and family_nonnav","id":"nn2c1c8c8c3m1r1a1","sN":2,"aN":"c1c8c8c3m1r1a1"}'>For personal and family</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-c-shellmenu_52-span"> <li class="js-nav-menu single-link" data-m='{"cN":"Self-help resources_cont","cT":"Container","id":"c3c1c8c8c3m1r1a1","sN":3,"aN":"c1c8c8c3m1r1a1"}'> <a id="c-shellmenu_53" class="js-subm-uhf-nav-link" href="https://support.microsoft.com/" data-m='{"cN":"CatNav_Self-help resources_nav","id":"n1c3c1c8c8c3m1r1a1","sN":1,"aN":"c3c1c8c8c3m1r1a1"}'>Self-help resources</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Billing support_cont","cT":"Container","id":"c4c1c8c8c3m1r1a1","sN":4,"aN":"c1c8c8c3m1r1a1"}'> <a id="c-shellmenu_54" class="js-subm-uhf-nav-link" href="https://go.microsoft.com/fwlink/?linkid=2267729" data-m='{"cN":"CatNav_Billing support_nav","id":"n1c4c1c8c8c3m1r1a1","sN":1,"aN":"c4c1c8c8c3m1r1a1"}'>Billing support</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Community_cont","cT":"Container","id":"c5c1c8c8c3m1r1a1","sN":5,"aN":"c1c8c8c3m1r1a1"}'> <a id="c-shellmenu_55" class="js-subm-uhf-nav-link" href="https://go.microsoft.com/fwlink/?linkid=2268025" data-m='{"cN":"CatNav_Community_nav","id":"n1c5c1c8c8c3m1r1a1","sN":1,"aN":"c5c1c8c8c3m1r1a1"}'>Community</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Contact Microsoft Support_cont","cT":"Container","id":"c6c1c8c8c3m1r1a1","sN":6,"aN":"c1c8c8c3m1r1a1"}'> <a id="c-shellmenu_56" class="js-subm-uhf-nav-link" href="https://support.microsoft.com/contactus" data-m='{"cN":"CatNav_Contact Microsoft Support_nav","id":"n1c6c1c8c8c3m1r1a1","sN":1,"aN":"c6c1c8c8c3m1r1a1"}'>Contact Microsoft Support</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cN":"For work_cont","cT":"Container","id":"c2c8c8c3m1r1a1","sN":2,"aN":"c8c8c3m1r1a1"}'> <span id="uhf-navspn-c-shellmenu_57-span" style="display:none" aria-expanded="false" data-m='{"cN":"CatNav_For work_nonnav","id":"nn1c2c8c8c3m1r1a1","sN":1,"aN":"c2c8c8c3m1r1a1"}'>For work</span> <button id="uhf-navbtn-c-shellmenu_57-button" type="button" aria-expanded="false" data-m='{"cN":"CatNav_For work_nonnav","id":"nn2c2c8c8c3m1r1a1","sN":2,"aN":"c2c8c8c3m1r1a1"}'>For work</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-c-shellmenu_57-span"> <li class="js-nav-menu single-link" data-m='{"cN":"Self-help resources_cont","cT":"Container","id":"c3c2c8c8c3m1r1a1","sN":3,"aN":"c2c8c8c3m1r1a1"}'> <a id="c-shellmenu_58" class="js-subm-uhf-nav-link" href="https://support.microsoft.com/" data-m='{"cN":"CatNav_Self-help resources_nav","id":"n1c3c2c8c8c3m1r1a1","sN":1,"aN":"c3c2c8c8c3m1r1a1"}'>Self-help resources</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Admin self-help (In English)_cont","cT":"Container","id":"c4c2c8c8c3m1r1a1","sN":4,"aN":"c2c8c8c3m1r1a1"}'> <a id="c-shellmenu_59" class="js-subm-uhf-nav-link" href=" https://go.microsoft.com/fwlink/?linkid=2268124" data-m='{"cN":"CatNav_Admin self-help (In English)_nav","id":"n1c4c2c8c8c3m1r1a1","sN":1,"aN":"c4c2c8c8c3m1r1a1"}'>Admin self-help</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Support plans_cont","cT":"Container","id":"c5c2c8c8c3m1r1a1","sN":5,"aN":"c2c8c8c3m1r1a1"}'> <a id="c-shellmenu_60" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/business/microsoft-365-for-business-support-options" data-m='{"cN":"CatNav_Support plans_nav","id":"n1c5c2c8c8c3m1r1a1","sN":1,"aN":"c5c2c8c8c3m1r1a1"}'>Support plans</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Find a partner_cont","cT":"Container","id":"c6c2c8c8c3m1r1a1","sN":6,"aN":"c2c8c8c3m1r1a1"}'> <a id="c-shellmenu_61" class="js-subm-uhf-nav-link" href="https://appsource.microsoft.com/en-us/marketplace/partner-dir?filter=sort%3D0%3BpageSize%3D18%3BonlyThisCountry%3Dtrue%3Bcountry%3DUS%3Blocname%3DUnited%2520States%3BlocationNotRequired%3Dtrue" data-m='{"cN":"CatNav_Find a partner_nav","id":"n1c6c2c8c8c3m1r1a1","sN":1,"aN":"c6c2c8c8c3m1r1a1"}'>Find a partner</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Contact Sales_cont","cT":"Container","id":"c7c2c8c8c3m1r1a1","sN":7,"aN":"c2c8c8c3m1r1a1"}'> <a id="c-shellmenu_62" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/business/sales-support" data-m='{"cN":"CatNav_Contact Sales_nav","id":"n1c7c2c8c8c3m1r1a1","sN":1,"aN":"c7c2c8c8c3m1r1a1"}'>Contact Sales</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Community_cont","cT":"Container","id":"c8c2c8c8c3m1r1a1","sN":8,"aN":"c2c8c8c3m1r1a1"}'> <a id="c-shellmenu_63" class="js-subm-uhf-nav-link" href="https://go.microsoft.com/fwlink/?linkid=2267923" data-m='{"cN":"CatNav_Community_nav","id":"n1c8c2c8c8c3m1r1a1","sN":1,"aN":"c8c2c8c8c3m1r1a1"}'>Community</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cN":"For education_cont","cT":"Container","id":"c3c8c8c3m1r1a1","sN":3,"aN":"c8c8c3m1r1a1"}'> <span id="uhf-navspn-c-shellmenu_64-span" style="display:none" aria-expanded="false" data-m='{"cN":"CatNav_For education_nonnav","id":"nn1c3c8c8c3m1r1a1","sN":1,"aN":"c3c8c8c3m1r1a1"}'>For education</span> <button id="uhf-navbtn-c-shellmenu_64-button" type="button" aria-expanded="false" data-m='{"cN":"CatNav_For education_nonnav","id":"nn2c3c8c8c3m1r1a1","sN":2,"aN":"c3c8c8c3m1r1a1"}'>For education</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-c-shellmenu_64-span"> <li class="js-nav-menu single-link" data-m='{"cN":"Self-help resources_cont","cT":"Container","id":"c3c3c8c8c3m1r1a1","sN":3,"aN":"c3c8c8c3m1r1a1"}'> <a id="c-shellmenu_65" class="js-subm-uhf-nav-link" href="https://go.microsoft.com/fwlink/?linkid=2268026" data-m='{"cN":"CatNav_Self-help resources_nav","id":"n1c3c3c8c8c3m1r1a1","sN":1,"aN":"c3c3c8c8c3m1r1a1"}'>Self-help resources</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Educator Center_cont","cT":"Container","id":"c4c3c8c8c3m1r1a1","sN":4,"aN":"c3c8c8c3m1r1a1"}'> <a id="c-shellmenu_66" class="js-subm-uhf-nav-link" href="https://go.microsoft.com/fwlink/?linkid=2267533" data-m='{"cN":"CatNav_Educator Center_nav","id":"n1c4c3c8c8c3m1r1a1","sN":1,"aN":"c4c3c8c8c3m1r1a1"}'>Educator Center</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Request support_cont","cT":"Container","id":"c5c3c8c8c3m1r1a1","sN":5,"aN":"c3c8c8c3m1r1a1"}'> <a id="c-shellmenu_67" class="js-subm-uhf-nav-link" href="https://aka.ms/edusupport" data-m='{"cN":"CatNav_Request support_nav","id":"n1c5c3c8c8c3m1r1a1","sN":1,"aN":"c5c3c8c8c3m1r1a1"}'>Request support</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Contact Microsoft Support_cont","cT":"Container","id":"c6c3c8c8c3m1r1a1","sN":6,"aN":"c3c8c8c3m1r1a1"}'> <a id="c-shellmenu_68" class="js-subm-uhf-nav-link" href="https://support.microsoft.com/contactus" data-m='{"cN":"CatNav_Contact Microsoft Support_nav","id":"n1c6c3c8c8c3m1r1a1","sN":1,"aN":"c6c3c8c8c3m1r1a1"}'>Contact Microsoft Support</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Community_cont","cT":"Container","id":"c7c3c8c8c3m1r1a1","sN":7,"aN":"c3c8c8c3m1r1a1"}'> <a id="c-shellmenu_69" class="js-subm-uhf-nav-link" href="https://go.microsoft.com/fwlink/?linkid=2267640" data-m='{"cN":"CatNav_Community_nav","id":"n1c7c3c8c8c3m1r1a1","sN":1,"aN":"c7c3c8c8c3m1r1a1"}'>Community</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cN":"For partners_cont","cT":"Container","id":"c4c8c8c3m1r1a1","sN":4,"aN":"c8c8c3m1r1a1"}'> <span id="uhf-navspn-c-shellmenu_70-span" style="display:none" aria-expanded="false" data-m='{"cN":"CatNav_For partners_nonnav","id":"nn1c4c8c8c3m1r1a1","sN":1,"aN":"c4c8c8c3m1r1a1"}'>For partners</span> <button id="uhf-navbtn-c-shellmenu_70-button" type="button" aria-expanded="false" data-m='{"cN":"CatNav_For partners_nonnav","id":"nn2c4c8c8c3m1r1a1","sN":2,"aN":"c4c8c8c3m1r1a1"}'>For partners</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-c-shellmenu_70-span"> <li class="js-nav-menu single-link" data-m='{"cN":"Become a partner (In English)_cont","cT":"Container","id":"c3c4c8c8c3m1r1a1","sN":3,"aN":"c4c8c8c3m1r1a1"}'> <a id="c-shellmenu_71" class="js-subm-uhf-nav-link" href="https://partner.microsoft.com/en-US/" data-m='{"cN":"CatNav_Become a partner (In English)_nav","id":"n1c3c4c8c8c3m1r1a1","sN":1,"aN":"c3c4c8c8c3m1r1a1"}'>Become a partner</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Partner resources (In English)_cont","cT":"Container","id":"c4c4c8c8c3m1r1a1","sN":4,"aN":"c4c8c8c3m1r1a1"}'> <a id="c-shellmenu_72" class="js-subm-uhf-nav-link" href="https://partner.microsoft.com/en-US/" data-m='{"cN":"CatNav_Partner resources (In English)_nav","id":"n1c4c4c8c8c3m1r1a1","sN":1,"aN":"c4c4c8c8c3m1r1a1"}'>Partner resources</a> </li> </ul> </li> <li class="js-nav-menu single-link" data-m='{"cN":"See all support_cont","cT":"Container","id":"c5c8c8c3m1r1a1","sN":5,"aN":"c8c8c3m1r1a1"}'> <a id="c-shellmenu_73" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/support" data-m='{"cN":"CatNav_See all support_nav","id":"n1c5c8c8c3m1r1a1","sN":1,"aN":"c5c8c8c3m1r1a1"}'>See all support</a> </li> </ul> </div> </li> <li class="single-link js-nav-menu uhf-menu-item"> <a id="c-shellmenu_custom_button_solid_newtab_trial" class="c-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/try" data-m='{"cN":"CatNav_Try for free_nav","id":"n9c8c3m1r1a1","sN":9,"aN":"c8c3m1r1a1"}'>Try for free</a> </li> <li id="overflow-menu" class="overflow-menu x-hidden uhf-menu-item"> <div class="c-uhf-menu js-nav-menu"> <button data-m='{"pid":"More","id":"nn10c8c3m1r1a1","sN":10,"aN":"c8c3m1r1a1"}' type="button" aria-label="More" aria-expanded="false">More</button> <ul id="overflow-menu-list" aria-hidden="true" class="overflow-menu-list"> </ul> </div> </li> </ul> </nav> <div class="c-uhfh-actions" data-m='{"cN":"Header actions_cont","cT":"Container","id":"c9c3m1r1a1","sN":9,"aN":"c3m1r1a1"}'> <div class="wf-menu"> <nav id="uhf-c-nav" aria-label="All Microsoft menu" data-m='{"cN":"GlobalNav_cont","cT":"Container","id":"c1c9c3m1r1a1","sN":1,"aN":"c9c3m1r1a1"}'> <ul class="js-paddle-items"> <li> <div class="c-uhf-menu js-nav-menu"> <button type="button" class="c-button-logo all-ms-nav" aria-expanded="false" data-m='{"cN":"GlobalNav_More_nonnav","id":"nn1c1c9c3m1r1a1","sN":1,"aN":"c1c9c3m1r1a1"}'> <span>All Microsoft</span></button> <ul class="f-multi-column f-multi-column-6" aria-hidden="true" data-m='{"cN":"More_cont","cT":"Container","id":"c2c1c9c3m1r1a1","sN":2,"aN":"c1c9c3m1r1a1"}'> <li class="c-w0-contr"> <h2 class="c-uhf-sronly">Global</h2> <ul class="c-w0"> <li class="js-nav-menu single-link" data-m='{"cN":"M365_cont","cT":"Container","id":"c1c2c1c9c3m1r1a1","sN":1,"aN":"c2c1c9c3m1r1a1"}'> <a id="shellmenu_75" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/microsoft-365" data-m='{"cN":"W0Nav_M365_nav","id":"n1c1c2c1c9c3m1r1a1","sN":1,"aN":"c1c2c1c9c3m1r1a1"}'>Microsoft 365</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Teams_cont","cT":"Container","id":"c2c2c1c9c3m1r1a1","sN":2,"aN":"c2c1c9c3m1r1a1"}'> <a id="l0_Teams" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-teams/group-chat-software" data-m='{"cN":"W0Nav_Teams_nav","id":"n1c2c2c1c9c3m1r1a1","sN":1,"aN":"c2c2c1c9c3m1r1a1"}'>Teams</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Copilot_cont","cT":"Container","id":"c3c2c1c9c3m1r1a1","sN":3,"aN":"c2c1c9c3m1r1a1"}'> <a id="shellmenu_77" class="js-subm-uhf-nav-link" href="https://copilot.microsoft.com/" data-m='{"cN":"W0Nav_Copilot_nav","id":"n1c3c2c1c9c3m1r1a1","sN":1,"aN":"c3c2c1c9c3m1r1a1"}'>Copilot</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Windows_cont","cT":"Container","id":"c4c2c1c9c3m1r1a1","sN":4,"aN":"c2c1c9c3m1r1a1"}'> <a id="shellmenu_78" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/windows/" data-m='{"cN":"W0Nav_Windows_nav","id":"n1c4c2c1c9c3m1r1a1","sN":1,"aN":"c4c2c1c9c3m1r1a1"}'>Windows</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Surface_cont","cT":"Container","id":"c5c2c1c9c3m1r1a1","sN":5,"aN":"c2c1c9c3m1r1a1"}'> <a id="shellmenu_79" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/surface" data-m='{"cN":"W0Nav_Surface_nav","id":"n1c5c2c1c9c3m1r1a1","sN":1,"aN":"c5c2c1c9c3m1r1a1"}'>Surface</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Xbox_cont","cT":"Container","id":"c6c2c1c9c3m1r1a1","sN":6,"aN":"c2c1c9c3m1r1a1"}'> <a id="shellmenu_80" class="js-subm-uhf-nav-link" href="https://www.xbox.com/" data-m='{"cN":"W0Nav_Xbox_nav","id":"n1c6c2c1c9c3m1r1a1","sN":1,"aN":"c6c2c1c9c3m1r1a1"}'>Xbox</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Deals_cont","cT":"Container","id":"c7c2c1c9c3m1r1a1","sN":7,"aN":"c2c1c9c3m1r1a1"}'> <a id="shellmenu_81" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/b/sale?icid=gm_nav_L0_salepage" data-m='{"cN":"W0Nav_Deals_nav","id":"n1c7c2c1c9c3m1r1a1","sN":1,"aN":"c7c2c1c9c3m1r1a1"}'>Deals</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Small Business_cont","cT":"Container","id":"c8c2c1c9c3m1r1a1","sN":8,"aN":"c2c1c9c3m1r1a1"}'> <a id="l0_SmallBusiness" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/b/business" data-m='{"cN":"W0Nav_Small Business_nav","id":"n1c8c2c1c9c3m1r1a1","sN":1,"aN":"c8c2c1c9c3m1r1a1"}'>Small Business</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Support_cont","cT":"Container","id":"c9c2c1c9c3m1r1a1","sN":9,"aN":"c2c1c9c3m1r1a1"}'> <a id="l1_support" class="js-subm-uhf-nav-link" href="https://support.microsoft.com/en-us" data-m='{"cN":"W0Nav_Support_nav","id":"n1c9c2c1c9c3m1r1a1","sN":1,"aN":"c9c2c1c9c3m1r1a1"}'>Support</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c10c2c1c9c3m1r1a1","sN":10,"aN":"c2c1c9c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_85-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c10c2c1c9c3m1r1a1","sN":1,"aN":"c10c2c1c9c3m1r1a1"}'>Software</span> <button id="uhf-navbtn-shellmenu_85-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c10c2c1c9c3m1r1a1","sN":2,"aN":"c10c2c1c9c3m1r1a1"}'>Software</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_85-span"> <li class="js-nav-menu single-link" data-m='{"cN":"More_Software_WindowsApps_cont","cT":"Container","id":"c3c10c2c1c9c3m1r1a1","sN":3,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_86" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/apps/windows?icid=CNavAppsWindowsApps" data-m='{"cN":"GlobalNav_More_Software_WindowsApps_nav","id":"n1c3c10c2c1c9c3m1r1a1","sN":1,"aN":"c3c10c2c1c9c3m1r1a1"}'>Windows Apps</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Software_AI_cont","cT":"Container","id":"c4c10c2c1c9c3m1r1a1","sN":4,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_87" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/ai" data-m='{"cN":"GlobalNav_More_Software_AI_nav","id":"n1c4c10c2c1c9c3m1r1a1","sN":1,"aN":"c4c10c2c1c9c3m1r1a1"}'>AI</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Software_Outlook_cont","cT":"Container","id":"c5c10c2c1c9c3m1r1a1","sN":5,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_88" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook" data-m='{"cN":"GlobalNav_More_Software_Outlook_nav","id":"n1c5c10c2c1c9c3m1r1a1","sN":1,"aN":"c5c10c2c1c9c3m1r1a1"}'>Outlook</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Software_OneDrive_cont","cT":"Container","id":"c6c10c2c1c9c3m1r1a1","sN":6,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_89" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage" data-m='{"cN":"GlobalNav_More_Software_OneDrive_nav","id":"n1c6c10c2c1c9c3m1r1a1","sN":1,"aN":"c6c10c2c1c9c3m1r1a1"}'>OneDrive</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Software_Microsoft Teams_cont","cT":"Container","id":"c7c10c2c1c9c3m1r1a1","sN":7,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_90" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-teams/group-chat-software" data-m='{"cN":"GlobalNav_More_Software_Microsoft Teams_nav","id":"n1c7c10c2c1c9c3m1r1a1","sN":1,"aN":"c7c10c2c1c9c3m1r1a1"}'>Microsoft Teams</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Software_OneNote_cont","cT":"Container","id":"c8c10c2c1c9c3m1r1a1","sN":8,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_91" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/onenote/digital-note-taking-app" data-m='{"cN":"GlobalNav_More_Software_OneNote_nav","id":"n1c8c10c2c1c9c3m1r1a1","sN":1,"aN":"c8c10c2c1c9c3m1r1a1"}'>OneNote</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Software_Edge_cont","cT":"Container","id":"c9c10c2c1c9c3m1r1a1","sN":9,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_92" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/edge" data-m='{"cN":"GlobalNav_More_Software_Edge_nav","id":"n1c9c10c2c1c9c3m1r1a1","sN":1,"aN":"c9c10c2c1c9c3m1r1a1"}'>Microsoft Edge</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Software_Skype_cont","cT":"Container","id":"c10c10c2c1c9c3m1r1a1","sN":10,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_93" class="js-subm-uhf-nav-link" href="https://www.skype.com/en/" data-m='{"cN":"GlobalNav_More_Software_Skype_nav","id":"n1c10c10c2c1c9c3m1r1a1","sN":1,"aN":"c10c10c2c1c9c3m1r1a1"}'>Skype</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cN":"PCsAndDevices_cont","cT":"Container","id":"c11c2c1c9c3m1r1a1","sN":11,"aN":"c2c1c9c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_94-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"cN":"GlobalNav_PCsAndDevices_nonnav","id":"nn1c11c2c1c9c3m1r1a1","sN":1,"aN":"c11c2c1c9c3m1r1a1"}'>PCs &amp; Devices </span> <button id="uhf-navbtn-shellmenu_94-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"cN":"GlobalNav_PCsAndDevices_nonnav","id":"nn2c11c2c1c9c3m1r1a1","sN":2,"aN":"c11c2c1c9c3m1r1a1"}'>PCs &amp; Devices </button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_94-span"> <li class="js-nav-menu single-link" data-m='{"cN":"More_PCsAndDevices_PCsAndTablets_cont","cT":"Container","id":"c3c11c2c1c9c3m1r1a1","sN":3,"aN":"c11c2c1c9c3m1r1a1"}'> <a id="shellmenu_95" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/b/pc?icid=CNavDevicesPC" data-m='{"cN":"GlobalNav_More_PCsAndDevices_PCsAndTablets_nav","id":"n1c3c11c2c1c9c3m1r1a1","sN":1,"aN":"c3c11c2c1c9c3m1r1a1"}'>Computers</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_PCsAndDevices_ShopXbox_cont","cT":"Container","id":"c4c11c2c1c9c3m1r1a1","sN":4,"aN":"c11c2c1c9c3m1r1a1"}'> <a id="shellmenu_96" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/b/xbox?icid=CNavDevicesXbox" data-m='{"cN":"GlobalNav_More_PCsAndDevices_ShopXbox_nav","id":"n1c4c11c2c1c9c3m1r1a1","sN":1,"aN":"c4c11c2c1c9c3m1r1a1"}'>Shop Xbox</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_PCsAndDevices_Accessories_cont","cT":"Container","id":"c5c11c2c1c9c3m1r1a1","sN":5,"aN":"c11c2c1c9c3m1r1a1"}'> <a id="shellmenu_97" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/b/accessories?icid=CNavDevicesAccessories" data-m='{"cN":"GlobalNav_More_PCsAndDevices_Accessories_nav","id":"n1c5c11c2c1c9c3m1r1a1","sN":1,"aN":"c5c11c2c1c9c3m1r1a1"}'>Accessories</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_PCsAndDevices_VMAndMixedReality_cont","cT":"Container","id":"c6c11c2c1c9c3m1r1a1","sN":6,"aN":"c11c2c1c9c3m1r1a1"}'> <a id="shellmenu_98" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/b/virtualreality?icid=CNavVirtualReality" data-m='{"cN":"GlobalNav_More_PCsAndDevices_VMAndMixedReality_nav","id":"n1c6c11c2c1c9c3m1r1a1","sN":1,"aN":"c6c11c2c1c9c3m1r1a1"}'>VR &amp; mixed reality</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_PCsAndDevicesCertifiedRefurbished_cont","cT":"Container","id":"c7c11c2c1c9c3m1r1a1","sN":7,"aN":"c11c2c1c9c3m1r1a1"}'> <a id="shellmenu_99" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/b/certified-refurbished-products" data-m='{"cN":"GlobalNav_More_PCsAndDevicesCertifiedRefurbished_nav","id":"n1c7c11c2c1c9c3m1r1a1","sN":1,"aN":"c7c11c2c1c9c3m1r1a1"}'>Certified Refurbished</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_PCsAndDevices_Trade-in-for-cash_cont","cT":"Container","id":"c8c11c2c1c9c3m1r1a1","sN":8,"aN":"c11c2c1c9c3m1r1a1"}'> <a id="shellmenu_100" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/b/microsoft-trade-in" data-m='{"cN":"GlobalNav_More_PCsAndDevices_Trade-in-for-cash_nav","id":"n1c8c11c2c1c9c3m1r1a1","sN":1,"aN":"c8c11c2c1c9c3m1r1a1"}'>Trade-in for cash</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c12c2c1c9c3m1r1a1","sN":12,"aN":"c2c1c9c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_101-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c12c2c1c9c3m1r1a1","sN":1,"aN":"c12c2c1c9c3m1r1a1"}'>Entertainment</span> <button id="uhf-navbtn-shellmenu_101-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c12c2c1c9c3m1r1a1","sN":2,"aN":"c12c2c1c9c3m1r1a1"}'>Entertainment</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_101-span"> <li class="js-nav-menu single-link" data-m='{"cN":"More_Entertainment_XboxGamePassUltimate_cont","cT":"Container","id":"c3c12c2c1c9c3m1r1a1","sN":3,"aN":"c12c2c1c9c3m1r1a1"}'> <a id="shellmenu_102" class="js-subm-uhf-nav-link" href="https://www.xbox.com/en-us/games/store/xbox-game-pass-ultimate/cfq7ttc0khs0?icid=CNavAllXboxGamePassUltimate" data-m='{"cN":"GlobalNav_More_Entertainment_XboxGamePassUltimate_nav","id":"n1c3c12c2c1c9c3m1r1a1","sN":1,"aN":"c3c12c2c1c9c3m1r1a1"}'>Xbox Game Pass Ultimate</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Entertainment_PC_Game_Pass_cont","cT":"Container","id":"c4c12c2c1c9c3m1r1a1","sN":4,"aN":"c12c2c1c9c3m1r1a1"}'> <a id="shellmenu_103" class="js-subm-uhf-nav-link" href="https://www.xbox.com/en-us/games/store/pc-game-pass/cfq7ttc0kgq8?icid=CNavAllPCGamePass" data-m='{"cN":"GlobalNav_More_Entertainment_PC_Game_Pass_nav","id":"n1c4c12c2c1c9c3m1r1a1","sN":1,"aN":"c4c12c2c1c9c3m1r1a1"}'>PC Game Pass</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Entertainment_XboxGames_cont","cT":"Container","id":"c5c12c2c1c9c3m1r1a1","sN":5,"aN":"c12c2c1c9c3m1r1a1"}'> <a id="shellmenu_104" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/b/xboxgames?icid=CNavGamesXboxGames" data-m='{"cN":"GlobalNav_More_Entertainment_XboxGames_nav","id":"n1c5c12c2c1c9c3m1r1a1","sN":1,"aN":"c5c12c2c1c9c3m1r1a1"}'>Xbox games</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Entertainment_PCGames_cont","cT":"Container","id":"c6c12c2c1c9c3m1r1a1","sN":6,"aN":"c12c2c1c9c3m1r1a1"}'> <a id="shellmenu_105" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/games/windows?icid=CNavGamesWindowsGames" data-m='{"cN":"GlobalNav_More_Entertainment_PCGames_nav","id":"n1c6c12c2c1c9c3m1r1a1","sN":1,"aN":"c6c12c2c1c9c3m1r1a1"}'>PC and Windows games</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Entertainment_MoviesAndTV_cont","cT":"Container","id":"c7c12c2c1c9c3m1r1a1","sN":7,"aN":"c12c2c1c9c3m1r1a1"}'> <a id="shellmenu_106" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/movies-and-tv?icid=TopNavMoviesTv" data-m='{"cN":"GlobalNav_More_Entertainment_MoviesAndTV_nav","id":"n1c7c12c2c1c9c3m1r1a1","sN":1,"aN":"c7c12c2c1c9c3m1r1a1"}'>Movies &amp; TV</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c13c2c1c9c3m1r1a1","sN":13,"aN":"c2c1c9c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_107-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c13c2c1c9c3m1r1a1","sN":1,"aN":"c13c2c1c9c3m1r1a1"}'>Business</span> <button id="uhf-navbtn-shellmenu_107-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c13c2c1c9c3m1r1a1","sN":2,"aN":"c13c2c1c9c3m1r1a1"}'>Business</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_107-span"> <li class="js-nav-menu single-link" data-m='{"cN":"More_Business_Microsoft_Cloud_cont","cT":"Container","id":"c3c13c2c1c9c3m1r1a1","sN":3,"aN":"c13c2c1c9c3m1r1a1"}'> <a id="shellmenu_108" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-cloud" data-m='{"cN":"GlobalNav_More_Business_Microsoft_Cloud_nav","id":"n1c3c13c2c1c9c3m1r1a1","sN":1,"aN":"c3c13c2c1c9c3m1r1a1"}'>Microsoft Cloud</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Business_Microsoft Security_cont","cT":"Container","id":"c4c13c2c1c9c3m1r1a1","sN":4,"aN":"c13c2c1c9c3m1r1a1"}'> <a id="shellmenu_109" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/security" data-m='{"cN":"GlobalNav_More_Business_Microsoft Security_nav","id":"n1c4c13c2c1c9c3m1r1a1","sN":1,"aN":"c4c13c2c1c9c3m1r1a1"}'>Microsoft Security</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Business_MicrosoftDynamics365_cont","cT":"Container","id":"c5c13c2c1c9c3m1r1a1","sN":5,"aN":"c13c2c1c9c3m1r1a1"}'> <a id="shellmenu_110" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/dynamics-365" data-m='{"cN":"GlobalNav_More_Business_MicrosoftDynamics365_nav","id":"n1c5c13c2c1c9c3m1r1a1","sN":1,"aN":"c5c13c2c1c9c3m1r1a1"}'>Dynamics 365</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Business_Microsoft365forbusiness_cont","cT":"Container","id":"c6c13c2c1c9c3m1r1a1","sN":6,"aN":"c13c2c1c9c3m1r1a1"}'> <a id="shellmenu_111" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/business" data-m='{"cN":"GlobalNav_More_Business_Microsoft365forbusiness_nav","id":"n1c6c13c2c1c9c3m1r1a1","sN":1,"aN":"c6c13c2c1c9c3m1r1a1"}'>Microsoft 365 for business</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Business_MicrosoftPowerPlatform_cont","cT":"Container","id":"c7c13c2c1c9c3m1r1a1","sN":7,"aN":"c13c2c1c9c3m1r1a1"}'> <a id="shellmenu_112" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/power-platform" data-m='{"cN":"GlobalNav_More_Business_MicrosoftPowerPlatform_nav","id":"n1c7c13c2c1c9c3m1r1a1","sN":1,"aN":"c7c13c2c1c9c3m1r1a1"}'>Microsoft Power Platform</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Business_Windows365_cont","cT":"Container","id":"c8c13c2c1c9c3m1r1a1","sN":8,"aN":"c13c2c1c9c3m1r1a1"}'> <a id="shellmenu_113" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/windows-365" data-m='{"cN":"GlobalNav_More_Business_Windows365_nav","id":"n1c8c13c2c1c9c3m1r1a1","sN":1,"aN":"c8c13c2c1c9c3m1r1a1"}'>Windows 365</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Business_MicrosoftIndustry_cont","cT":"Container","id":"c9c13c2c1c9c3m1r1a1","sN":9,"aN":"c13c2c1c9c3m1r1a1"}'> <a id="shellmenu_114" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/industry" data-m='{"cN":"GlobalNav_More_Business_MicrosoftIndustry_nav","id":"n1c9c13c2c1c9c3m1r1a1","sN":1,"aN":"c9c13c2c1c9c3m1r1a1"}'>Microsoft Industry</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Business_SmallBusiness_cont","cT":"Container","id":"c10c13c2c1c9c3m1r1a1","sN":10,"aN":"c13c2c1c9c3m1r1a1"}'> <a id="shellmenu_115" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/b/business?icid=CNavBusinessStore" data-m='{"cN":"GlobalNav_More_Business_SmallBusiness_nav","id":"n1c10c13c2c1c9c3m1r1a1","sN":1,"aN":"c10c13c2c1c9c3m1r1a1"}'>Small Business</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c14c2c1c9c3m1r1a1","sN":14,"aN":"c2c1c9c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_116-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c14c2c1c9c3m1r1a1","sN":1,"aN":"c14c2c1c9c3m1r1a1"}'>Developer &amp; IT </span> <button id="uhf-navbtn-shellmenu_116-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c14c2c1c9c3m1r1a1","sN":2,"aN":"c14c2c1c9c3m1r1a1"}'>Developer &amp; IT </button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_116-span"> <li class="js-nav-menu single-link" data-m='{"cN":"More_DeveloperAndIT_Azure_cont","cT":"Container","id":"c3c14c2c1c9c3m1r1a1","sN":3,"aN":"c14c2c1c9c3m1r1a1"}'> <a id="shellmenu_117" class="js-subm-uhf-nav-link" href="https://azure.microsoft.com/en-us/" data-m='{"cN":"GlobalNav_More_DeveloperAndIT_Azure_nav","id":"n1c3c14c2c1c9c3m1r1a1","sN":1,"aN":"c3c14c2c1c9c3m1r1a1"}'>Azure</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_DeveloperAndIT_MicrosoftDeveloper_cont","cT":"Container","id":"c4c14c2c1c9c3m1r1a1","sN":4,"aN":"c14c2c1c9c3m1r1a1"}'> <a id="shellmenu_118" class="js-subm-uhf-nav-link" href="https://developer.microsoft.com/en-us/" data-m='{"cN":"GlobalNav_More_DeveloperAndIT_MicrosoftDeveloper_nav","id":"n1c4c14c2c1c9c3m1r1a1","sN":1,"aN":"c4c14c2c1c9c3m1r1a1"}'>Microsoft Developer</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_DeveloperAndIT_Documentation_cont","cT":"Container","id":"c5c14c2c1c9c3m1r1a1","sN":5,"aN":"c14c2c1c9c3m1r1a1"}'> <a id="shellmenu_119" class="js-subm-uhf-nav-link" href="https://learn.microsoft.com/docs/" data-m='{"cN":"GlobalNav_More_DeveloperAndIT_Documentation_nav","id":"n1c5c14c2c1c9c3m1r1a1","sN":1,"aN":"c5c14c2c1c9c3m1r1a1"}'>Documentation</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_DeveloperAndIT_MicrosoftLearn_cont","cT":"Container","id":"c6c14c2c1c9c3m1r1a1","sN":6,"aN":"c14c2c1c9c3m1r1a1"}'> <a id="shellmenu_120" class="js-subm-uhf-nav-link" href="https://learn.microsoft.com/" data-m='{"cN":"GlobalNav_More_DeveloperAndIT_MicrosoftLearn_nav","id":"n1c6c14c2c1c9c3m1r1a1","sN":1,"aN":"c6c14c2c1c9c3m1r1a1"}'>Microsoft Learn</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_DeveloperAndIT_MicrosoftTechCommunity_cont","cT":"Container","id":"c7c14c2c1c9c3m1r1a1","sN":7,"aN":"c14c2c1c9c3m1r1a1"}'> <a id="shellmenu_121" class="js-subm-uhf-nav-link" href="https://techcommunity.microsoft.com/" data-m='{"cN":"GlobalNav_More_DeveloperAndIT_MicrosoftTechCommunity_nav","id":"n1c7c14c2c1c9c3m1r1a1","sN":1,"aN":"c7c14c2c1c9c3m1r1a1"}'>Microsoft Tech Community</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_DeveloperAndIT_AzureMarketplace_cont","cT":"Container","id":"c8c14c2c1c9c3m1r1a1","sN":8,"aN":"c14c2c1c9c3m1r1a1"}'> <a id="shellmenu_122" class="js-subm-uhf-nav-link" href="https://azuremarketplace.microsoft.com/en-us/" data-m='{"cN":"GlobalNav_More_DeveloperAndIT_AzureMarketplace_nav","id":"n1c8c14c2c1c9c3m1r1a1","sN":1,"aN":"c8c14c2c1c9c3m1r1a1"}'>Azure Marketplace</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_DeveloperAndIT_AppSource_cont","cT":"Container","id":"c9c14c2c1c9c3m1r1a1","sN":9,"aN":"c14c2c1c9c3m1r1a1"}'> <a id="shellmenu_123" class="js-subm-uhf-nav-link" href="https://appsource.microsoft.com/en-us/" data-m='{"cN":"GlobalNav_More_DeveloperAndIT_AppSource_nav","id":"n1c9c14c2c1c9c3m1r1a1","sN":1,"aN":"c9c14c2c1c9c3m1r1a1"}'>AppSource</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_DeveloperAndIT_VisualStudio_cont","cT":"Container","id":"c10c14c2c1c9c3m1r1a1","sN":10,"aN":"c14c2c1c9c3m1r1a1"}'> <a id="shellmenu_124" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/" data-m='{"cN":"GlobalNav_More_DeveloperAndIT_VisualStudio_nav","id":"n1c10c14c2c1c9c3m1r1a1","sN":1,"aN":"c10c14c2c1c9c3m1r1a1"}'>Visual Studio</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c15c2c1c9c3m1r1a1","sN":15,"aN":"c2c1c9c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_125-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c15c2c1c9c3m1r1a1","sN":1,"aN":"c15c2c1c9c3m1r1a1"}'>Other</span> <button id="uhf-navbtn-shellmenu_125-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c15c2c1c9c3m1r1a1","sN":2,"aN":"c15c2c1c9c3m1r1a1"}'>Other</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_125-span"> <li class="js-nav-menu single-link" data-m='{"cN":"More_Other_Microsoft Rewards_cont","cT":"Container","id":"c3c15c2c1c9c3m1r1a1","sN":3,"aN":"c15c2c1c9c3m1r1a1"}'> <a id="shellmenu_126" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/rewards" data-m='{"cN":"GlobalNav_More_Other_Microsoft Rewards_nav","id":"n1c3c15c2c1c9c3m1r1a1","sN":1,"aN":"c3c15c2c1c9c3m1r1a1"}'>Microsoft Rewards </a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Other_FreeDownloadsAndSecurity_cont","cT":"Container","id":"c4c15c2c1c9c3m1r1a1","sN":4,"aN":"c15c2c1c9c3m1r1a1"}'> <a id="shellmenu_127" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/download" data-m='{"cN":"GlobalNav_More_Other_FreeDownloadsAndSecurity_nav","id":"n1c4c15c2c1c9c3m1r1a1","sN":1,"aN":"c4c15c2c1c9c3m1r1a1"}'>Free downloads &amp; security</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Other_Education_cont","cT":"Container","id":"c5c15c2c1c9c3m1r1a1","sN":5,"aN":"c15c2c1c9c3m1r1a1"}'> <a id="shellmenu_128" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/education" data-m='{"cN":"GlobalNav_More_Other_Education_nav","id":"n1c5c15c2c1c9c3m1r1a1","sN":1,"aN":"c5c15c2c1c9c3m1r1a1"}'>Education</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Other_GiftCards_cont","cT":"Container","id":"c6c15c2c1c9c3m1r1a1","sN":6,"aN":"c15c2c1c9c3m1r1a1"}'> <a id="shellmenu_129" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/store/b/gift-cards" data-m='{"cN":"GlobalNav_More_Other_GiftCards_nav","id":"n1c6c15c2c1c9c3m1r1a1","sN":1,"aN":"c6c15c2c1c9c3m1r1a1"}'>Gift cards</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Other_Licensing_cont","cT":"Container","id":"c7c15c2c1c9c3m1r1a1","sN":7,"aN":"c15c2c1c9c3m1r1a1"}'> <a id="Licensing" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/licensing/" data-m='{"cN":"GlobalNav_More_Other_Licensing_nav","id":"n1c7c15c2c1c9c3m1r1a1","sN":1,"aN":"c7c15c2c1c9c3m1r1a1"}'>Licensing</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Other_Unlocked_stories_cont","cT":"Container","id":"c8c15c2c1c9c3m1r1a1","sN":8,"aN":"c15c2c1c9c3m1r1a1"}'> <a id="shellmenu_131" class="js-subm-uhf-nav-link" href="https://unlocked.microsoft.com/" data-m='{"cN":"GlobalNav_More_Other_Unlocked_stories_nav","id":"n1c8c15c2c1c9c3m1r1a1","sN":1,"aN":"c8c15c2c1c9c3m1r1a1"}'>Unlocked stories</a> </li> </ul> </li> <li class="f-multi-column-info"> <a data-m='{"id":"n16c2c1c9c3m1r1a1","sN":16,"aN":"c2c1c9c3m1r1a1"}' href="https://www.microsoft.com/en-us/sitemap" aria-label="" class="c-glyph">View Sitemap</a> </li> </ul> </div> </li> </ul> </nav> </div> <form class="c-search" autocomplete="off" id="searchForm" name="searchForm" role="search" action="https://www.microsoft.com/en-us/microsoft-365/site-search" method="GET" data-seAutoSuggest='{"isAutosuggestDisabled":true,"queryParams":{"market":"en-us","clientId":"7F27B536-CF6B-4C65-8638-A0F8CBDFCA65","sources":"Microsoft-Terms,Iris-Products,DCatAll-Products","filter":"+ClientType:StoreWeb","counts":"5,1,5"},"familyNames":{"Apps":"App","Books":"Book","Bundles":"Bundle","Devices":"Device","Fees":"Fee","Games":"Game","MusicAlbums":"Album","MusicTracks":"Song","MusicVideos":"Video","MusicArtists":"Artist","OperatingSystem":"Operating System","Software":"Software","Movies":"Movie","TV":"TV","CSV":"Gift Card","VideoActor":"Actor"}}' data-seautosuggestapi="https://www.microsoft.com/msstoreapiprod/api/autosuggest" data-m='{"cN":"GlobalNav_Search_cont","cT":"Container","id":"c3c1c9c3m1r1a1","sN":3,"aN":"c1c9c3m1r1a1"}' aria-expanded="false"> <input id="cli_shellHeaderSearchInput" aria-label="Search Expanded" aria-expanded="false" aria-controls="universal-header-search-auto-suggest-transparent" aria-owns="universal-header-search-auto-suggest-ul" type="search" name="q" placeholder="Search Microsoft 365" data-m='{"cN":"SearchBox_nav","id":"n1c3c1c9c3m1r1a1","sN":1,"aN":"c3c1c9c3m1r1a1"}' data-toggle="tooltip" data-placement="right" title="Search Microsoft 365" /> <button id="search" aria-label="Search Microsoft 365" class="c-glyph" data-m='{"cN":"Search_nav","id":"n2c3c1c9c3m1r1a1","sN":2,"aN":"c3c1c9c3m1r1a1"}' data-bi-mto="true" aria-expanded="false" disabled="disabled"> <span role="presentation">Search</span> <span role="tooltip" class="c-uhf-tooltip c-uhf-search-tooltip">Search Microsoft 365</span> </button> <div class="m-auto-suggest" id="universal-header-search-auto-suggest-transparent" role="group"> <ul class="c-menu" id="universal-header-search-auto-suggest-ul" aria-label="Search Suggestions" aria-hidden="true" data-bi-dnt="true" data-bi-mto="true" data-js-auto-suggest-position="default" role="listbox" data-tel="jsll" data-m='{"cN":"search suggestions_cont","cT":"Container","id":"c3c3c1c9c3m1r1a1","sN":3,"aN":"c3c1c9c3m1r1a1"}'></ul> <ul class="c-menu f-auto-suggest-no-results" aria-hidden="true" data-js-auto-suggest-postion="default" data-js-auto-suggest-position="default" role="listbox"> <li class="c-menu-item"> <span tabindex="-1">No results</span></li> </ul> </div> </form> <button data-m='{"cN":"cancel-search","pid":"Cancel Search","id":"nn4c1c9c3m1r1a1","sN":4,"aN":"c1c9c3m1r1a1"}' id="cancel-search" class="cancel-search" aria-label="Cancel Search"> <span>Cancel</span> </button> <div id="meControl" class="c-me" data-signinsettings='{"containerId":"meControl","enabled":true,"headerHeight":48,"debug":false,"extensibleLinks":[{"string":"For home","url":"https://www.office.com/?auth=1","id":"global-office-account-personal"},{"string":"Work, school or university","url":"https://www.office.com/?auth=2","id":"global-office-account-commercial"}],"userData":{"idp":"msa","firstName":"","lastName":"","memberName":"","cid":"","authenticatedState":"3"},"rpData":{"preferredIdp":"msa","msaInfo":{"signInUrl":"","signOutUrl":"","meUrl":"https://login.live.com/me.srf?wa=wsignin1.0"},"aadInfo":{"signOutUrl":"","appId":"","siteUrl":"","blockMsaFed":true}}}' data-m='{"cN":"GlobalNav_Account_cont","cT":"Container","id":"c5c1c9c3m1r1a1","sN":5,"aN":"c1c9c3m1r1a1"}'> <div class="msame_Header"> <div class="msame_Header_name st_msame_placeholder">Sign in</div> </div> </div> </div> </div> </div> </header> </div> </div> </div> <div class='meControl-configInfo' data-isenabled='true' data-convergedstack='true' data-baseurl='/cascadeauth/microsoft-365/account' data-appid='10fa57ef-4895-4ab2-872c-8c3613d4f7fb' data-appcallbackurl='https://www.microsoft.com/cascadeauth/account/signin-oidc' data-accountconstraint='0' data-apigeneration='GEN2' data-silentauthrequirereload='false' data-silentauthaction='aadfirst'></div> <div class='userInfo-config' data-userInfoUrl='/cascadeauth/api/microsoft-365/v1/account/userinfo' data-userInfoTimeoutMS='1000' data-retryDelayMS='2000' data-maxRetryAttempt='3'></div> <script src="/etc.clientlibs/microsoft/components/content/universalheader/v1/universalheader/clientlibs/site.min.ACSHASH1dabd5cc3f7b68c178b59ea74dc62947.js"></script> </div> <div class="layout-container responsivegrid aem-GridColumn aem-GridColumn--default--12" data-component-id="28134f1ee1370eee417bc52d1ed0a717"> <main class="microsoft-template-layout-container" tabindex="-1"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="responsivegrid aem-GridColumn aem-GridColumn--default--12"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="html-markup aem-GridColumn aem-GridColumn--default--12" data-component-id="c86feede7b7d6fed7bdfc861354e2af8" oc-component-name="html-markup"> <div class="oc-html-markup" data-oc="occ7db" id="html-markup-occ7db"> <div> <script>$(document).ready(function() { setTimeout(() => { // Generate the filters and products markup const globalfilters = {}; let topResult = 20; let skipResult = 0; function sanitizeInput(input) { if (typeof input === "string") { const map = { "&": "&amp", "<": "&lt", ">": "&gt", "/": "&#x2F;", "`": "&#96;", "=": "&#x3D;", ";": "&#59;", "(": "&#40;", ")": "&#41;", }; const regex = /[&<>/`=;()]/g; if (regex.test(input)) { const noScriptContent = input.replace( /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>|<[^>]*>.*?<\/[^>]*>|<[^>]+>/gi, "" ); const cleanedInput = noScriptContent.replace(/\bon\w+="[^"]*"/gi, ""); return cleanedInput.trim(); } else { console.log( "Input does not contain characters that need to be sanitized." ); } } else { console.warn("Input is not a string. Returning original value."); } return input; } function checkIdURL() { return new URL(window.location).search.includes("id="); } let apiURL = $(".upper-container")[0].nextElementSibling.attributes["api"].value; function commonPageAPICall() { $.ajax({ url: apiURL + `?$count=true&includeFacets=true&top=${topResult}&skip=${skipResult}`, method: "GET", headers: { "Access-Control-Allow-Origin": "*", "Content-Type": "application/json", }, contentType: "application/json", dataType: "json", crossDomain: true, xhrFields: { withCredentials: false, }, }) .then((resp) => { $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { globalfilters["m365"] = resp.facets; sessionStorage.setItem( "global-filters", JSON.stringify(globalfilters) ); } else if ($(this).hasClass("azure_filter_container")) { globalfilters["azure"] = resp.facets; sessionStorage.setItem( "global-filters", JSON.stringify(globalfilters) ); } }); facetsRendering(); $(".loading").hide(); }) .catch((err) => { $(".loading").hide(); console.log(err); }); } $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { if (sessionStorage.getItem("global-filters?.m365") == undefined) { commonPageAPICall(); } else { facetsRendering(); } } else if ($(this).hasClass("azure_filter_container")) { if (sessionStorage.getItem("global-filters?.azure") == undefined) { commonPageAPICall(); } else { facetsRendering(); } } }); // Generate the filters and products markup function facetsRendering() { const filtersOri = JSON.parse(sessionStorage.getItem("global-filters")); function toCamelCase(str) { return str .replace(/(?:^\w|[A-Z]|\b\w|\s+|_|\-)/g, function(match, index) { return index === 0 ? match.toLowerCase() : match.toUpperCase(); }) .replace(/\s+|_|-/g, ""); } function convertValueToCamelCase(obj, key) { function recursiveConvert(o) { if (Array.isArray(o)) { for (let i = 0; i < o.length; i++) { if (typeof o[i] === "object") { recursiveConvert(o[i]); } } } else if (typeof o === "object") { for (const prop in o) { if (o.hasOwnProperty(prop)) { if (prop === key && typeof o[prop] === "string") { o[prop] = toCamelCase(o[prop]); } else if (typeof o[prop] === "object" && o[prop] !== null) { recursiveConvert(o[prop]); } } } } } recursiveConvert(obj); } // Convert values of 'name' key to camel case convertValueToCamelCase(filtersOri, "name"); let filters = JSON.parse(JSON.stringify(filtersOri, null, 2)); const productFilters = filters?.m365 || filters?.azure; let facetsValues = []; let urlFiltersInput = new URL(location.href).searchParams.get("filters")?.split(",").map(item => item.trim()).filter(Boolean); let localstorageInputAzure = localStorage.getItem("data-azure"); let localstorageInputM365 = localStorage.getItem("data-m365"); const urlFiltersAzure = localstorageInputAzure ? sanitizeInput(localstorageInputAzure) : "[]"; const urlFiltersM365 = localstorageInputM365 ? sanitizeInput(localstorageInputM365) : "[]"; $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { localStorage.setItem("data-m365", urlFiltersInput ? JSON.stringify(sanitizeInput(urlFiltersInput)) : urlFiltersM365); } else if ($(this).hasClass("azure_filter_container")) { localStorage.setItem("data-azure", urlFiltersInput ? sanitizeInput(urlFiltersInput) : urlFiltersAzure); } }); const createPillButton = (text) => { const button = document.createElement("button"); button.classList.add("pill-bar__item"); button.setAttribute("data-filter-name", "Pillbar-1"); button.setAttribute("role", "option"); button.setAttribute("tabindex", "0"); const div = document.createElement("div"); // Create label span and set text content safely const labelSpan = document.createElement("span"); labelSpan.classList.add("pill-bar__item__label"); labelSpan.textContent = !isNaN(Date.parse(text)) ? text.split("T")[0].split("-").slice(0, 2).join("-") : text; const badgeSpan = document.createElement("span"); badgeSpan.classList.add("badge", "badge--size-xs", "ml-2"); const ocrIconDiv = document.createElement("div"); ocrIconDiv.classList.add( "ocr-icon", "d-inline-flex", "justify-content-center" ); const removeFilter = "Remove filter"; const glyphSpan = document.createElement("span"); glyphSpan.classList.add("glyph-prepend", "glyph-prepend-cancel"); glyphSpan.setAttribute("role", "img"); glyphSpan.setAttribute("aria-label", removeFilter); // Build structure by appending each element ocrIconDiv.appendChild(glyphSpan); badgeSpan.appendChild(ocrIconDiv); div.appendChild(labelSpan); div.appendChild(badgeSpan); button.appendChild(div); return button; }; const getPill = (text) => { let el = document.createElement("li"); el.classList.add("pill-bar-item"); el.setAttribute("ocr-component-name", "pill-bar-item"); el.setAttribute("role", "presentation"); el.appendChild(createPillButton(text.replace(/[\[\]"]/g, ''))); el.addEventListener("click", (e) => { removeData(text); if (text.includes("New within:")) { $(`#menu-list-new-updated-m365 li .ocr-input--type-radio input[type="radio"][name="category1"]:checked`)[0].checked = false } if (text.includes("Changed within:")) { $(`#menu-list-new-updated-m365 li .ocr-input--type-radio input[type="radio"][name="category2"]:checked`)[0].checked = false } $.each(displayFacetsValues, function(index, value) { $.each(value.subValues, function(ind, val) { displayFacetsValues.map((item) => { if (item.name === value.name) { return (item.checked = value.checked.filter( (proj) => proj !== text )); } }); }); }); renderDropDown(); $("#menu-list-azure-product") .find( `input[type="checkbox"][value="${text}"]:not(#${$(e).attr("id")})` ) .each(function() { $(this).prop("checked", false); parentCheckboxBehaviour(); }); updateSelectedCount(); if ( JSON.parse(localStorage.getItem("data-m365")).length == 0 && $(".m365_filter_container").hasClass("m365_filter_container") ) { for (let i = 0; i < window.location.href.split("?").length; i++) { if ( window.location.href.split("?")[1].includes("searchterms=") || window.location.href.split("?")[1].includes("sortby=") ) { const res = new URL(window.location).href .split("?")[1] .split("&") .filter((item) => !item.includes("filters")) .join("&"); window.history.pushState({}, "", window.location.origin + window.location.pathname + "?" + res ); } else { window.history.pushState({}, "", window.location.href .split("?") .filter((item) => !item.includes("filters")) ); } } } else if ( JSON.parse(localStorage.getItem("data-azure")).length == 0 && $(".azure_filter_container").hasClass("azure_filter_container") ) { for (let i = 0; i < window.location.href.split("?").length; i++) { if ( window.location.href.split("?")[1].includes("searchterms=") || window.location.href.split("?")[1].includes("sortby=") ) { const res = new URL(window.location).href .split("?")[1] .split("&") .filter((item) => !item.includes("filters")) .join("&"); window.history.pushState({}, "", window.location.origin + window.location.pathname + "?" + res ); } else { window.history.pushState({}, "", window.location.href .split("?") .filter((item) => !item.includes("filters")) ); } } } }); const pillContainer = document.querySelector("#roadmap-pillbar"); pillContainer.appendChild(el); }; const printData = () => { let data; $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { data = JSON.parse(localStorage.getItem("data-m365")) } else if ($(this).hasClass("azure_filter_container")) { data = JSON.parse(localStorage.getItem("data-azure")) } }); const pillContainer = document.querySelector("#roadmap-pillbar"); pillContainer.innerHTML = ""; for (let i = 0; i < data.length; i++) { if (data[i] !== null || undefined) { getPill(data[i]); } } if ($(".pill-bar-item").length > 0) { let el = document.createElement("li"); el.classList.add("pill-bar-item"); el.setAttribute("ocr-component-name", "pill-bar-item"); el.setAttribute("role", "presentation"); let clear = document.createElement("div"); clear.setAttribute("id", "clearPillbar"); clear.classList.add("select-all"); clear.innerText = "Clear All"; el.appendChild(clear); const pillContainer = document.querySelector("#roadmap-pillbar"); pillContainer.appendChild(el); clear.addEventListener("click", () => { if ($(`#menu-list-new-updated-m365 li .ocr-input--type-radio input[type="radio"][name="category1"]:checked`).length > 0) { $(`#menu-list-new-updated-m365 li .ocr-input--type-radio input[type="radio"][name="category1"]:checked`)[0].checked = false } if ($(`#menu-list-new-updated-m365 li .ocr-input--type-radio input[type="radio"][name="category2"]:checked`).length > 0) { $(`#menu-list-new-updated-m365 li .ocr-input--type-radio input[type="radio"][name="category2"]:checked`)[0].checked = false } var dropdownM365 = [ "status", "product", "releaseRing", "platform", "cloudInstance", ]; for (let i = 0; i < data.length; i++) { removeData(data[i]); renderDropDown(); JSON.parse( JSON.stringify( displayFacetsValues.map((item) => (item.checked.length = 0)) ) ); } clearAllCheckboxes(); $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { localStorage.setItem("data-m365", JSON.stringify([])); localStorage.setItem("save-filters-m365", JSON.stringify("")); } else if ($(this).hasClass("azure_filter_container")) { localStorage.setItem("data-azure", JSON.stringify([])) localStorage.setItem("save-filters-azure", JSON.stringify("")); } }); localStorage.setItem("CalendarDate", JSON.stringify("")); localStorage.setItem("ChangedItem", JSON.stringify("")); localStorage.setItem("specialItem", JSON.stringify("")); for (let j = 0; j < dropdownM365.length; j++) { $("#" + dropdownM365[j]).text("0 Selected"); } for (let i = 0; i < window.location.href.split("?").length; i++) { if ( window.location.href.split("?")[1].includes("searchterms=") || window.location.href.split("?")[1].includes("sortby=") ) { const res = new URL(window.location).href .split("?")[1] .split("&") .filter((item) => !item.includes("filters")) .join("&"); window.history.pushState({}, "", window.location.origin + window.location.pathname + "?" + res ); } else { window.history.pushState({}, "", window.location.href .split("?") .filter((item) => !item.includes("filters")) ); } } }); } }; printData(); const saveData = (value) => { const stringData = JSON.stringify(value); $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { localStorage.setItem("data-m365", stringData) } else if ($(this).hasClass("azure_filter_container")) { localStorage.setItem("data-azure", stringData) } }); var url = new URL(window.location); url.searchParams.set("filters", stringData); window.history.pushState({}, "", url); printData(); }; const readData = () => { let data; $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { data = JSON.parse(localStorage.getItem("data-m365")); } else if ($(this).hasClass("azure_filter_container")) { data = JSON.parse(localStorage.getItem("data-azure")); } }); return data; }; const checkData = (value) => { const data = readData(); return data.filter((_checked) => _checked === value).length > 0; }; const addData = (value) => { let data = readData(); if (!data) { data = []; } if (!data.includes(value)) { data.push(value); } saveData(data); printData(); }; function removeData(value) { const data = readData(); const updatedData = data.filter((_checked) => _checked != value); saveData(updatedData); printData(); let filterData; $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { filterData = JSON.parse(localStorage?.getItem("save-filters-m365")); } else if ($(this).hasClass("azure_filter_container")) { filterData = JSON.parse(localStorage?.getItem("save-filters-azure")); } }); function removeValues(obj, valuesToRemove) { Object.keys(obj).forEach((key) => { if (Array.isArray(obj[key])) { obj[key] = obj[key].filter( (item) => !valuesToRemove.includes(item) ); } if (typeof obj[key] === "object" && obj[key] !== null) { Object.values(obj[key]).forEach((valueData) => { if (Array.isArray(valueData)) { valueData = valueData.filter( (item) => !valuesToRemove.includes(item) ); } }); } }); delete obj[`${valuesToRemove}`] if (Array.isArray(obj.productCategory)) { obj.productCategory.forEach((category) => { if (Array.isArray(category.values)) { category.values = category.values.filter( (value) => !valuesToRemove.includes(value) ); } }); } } if (value.includes("Changed within")) { value = "newOrUpdatedModified" } else if (value.includes("New within")) { value = "newOrUpdatedCreated" } removeValues(filterData, value); $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { localStorage.setItem("save-filters-m365", JSON.stringify(filterData)); } else if ($(this).hasClass("azure_filter_container")) { localStorage.setItem("save-filters-azure", JSON.stringify(filterData)) } }); } const toggleCheckBox = (e) => { if (e.target.checked && e?.target?.value !== null) { addData(e.target.value); } else { removeData(e.target.value); $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { if (JSON.parse(localStorage.getItem("data-m365")).length == 0) { for (let i = 0; i < window.location.href.split("?").length; i++) { if ( window.location.href.split("?")[1].includes("searchterms=") || window.location.href.split("?")[1].includes("sortby=") ) { const res = new URL(window.location).href .split("?")[1] .split("&") .filter((item) => !item.includes("filters")) .join("&"); window.history.pushState({}, "", window.location.origin + window.location.pathname + "?" + res ); } else { window.history.pushState({}, "", window.location.href .split("?") .filter((item) => !item.includes("filters")) ); } } } } else if ($(this).hasClass("azure_filter_container")) { if (JSON.parse(localStorage.getItem("data-azure")).length == 0) { for (let i = 0; i < window.location.href.split("?").length; i++) { if ( window.location.href.split("?")[1].includes("searchterms=") || window.location.href.split("?")[1].includes("sortby=") ) { const res = new URL(window.location).href .split("?")[1] .split("&") .filter((item) => !item.includes("filters")) .join("&"); window.history.pushState({}, "", window.location.origin + window.location.pathname + "?" + res ); } else { window.history.pushState({}, "", window.location.href .split("?") .filter((item) => !item.includes("filters")) ); } } } } }); } }; let data; $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { data = JSON.parse(localStorage.getItem("data-m365")) } else if ($(this).hasClass("azure_filter_container")) { data = JSON.parse(localStorage.getItem("data-azure")) } }); $.each(productFilters, function(index, value) { let obj = { name: "", subValues: [], checked: [], count: [], }; obj.name = value.name; $.each(value.values, function(index, val) { if (val.value || val.ProductName) { obj.subValues.push(val.value || val.ProductName); obj.count.push(val.count); if (data.includes(val.value || val.ProductName)) { obj.checked.push(val.value || val.ProductName); } } }); facetsValues.push(obj); }); var displayFacetsValues = facetsValues; function renderDropDown() { var ids = []; var anchors = $(".dropdown").find("a"); $(anchors).each(function(index, value) { if ($(this).attr("aria-controls")) { ids.push($(this).attr("aria-controls")); } }); $.each(ids, function(ind, item) { let filtersMarkup = ""; let searchbar = ""; if ( !item.includes("azure-product") && !item.includes("menu-list-new-updated-m365") && !(item.includes("azure-sortby") || item.includes("m365-sortby")) ) { $.each(displayFacetsValues, function(index, value) { if (item.includes(value.name)) { let valuesMarkup = ""; if (value.name === "product") { $.each(value.subValues, function(ind, val) { valuesMarkup += ` <div class="${value.name}"> <div class="ocr-input ocr-input--type-checkbox d-flex align-items-start" id="${ value.name }-item"> <input type="checkbox" class="ocr-input__input products-child-checkbox" name="atomic-checkbox" value="${val}" id="${ value.name }-${ind}"${checkData(val) ? "checked" : ""}> <label class="ocr-input__label" for="${ value.name }-${ind}">${val}</label> </div> </div> `; }); searchbar = `<div class="search-bar theme-day"> <form role="search"> <div class="input-master"> <div class="input-master__search"> <input type="search" class="label-lead" id="${value.name}-search" placeholder="Search Product" /> </div> <button class="btn btn--icon-only btn--sm" id="${value.name}-search-button" aria-label="${value.name}-search"> <span class="glyph-prepend glyph-prepend-zoom" id="search-icon"></span> </button> </div> </form> </div>`; let action = ""; if (value.checked.length > 0) { action = `<div id="${value.name}-action" class='select-all'>Clear all</div>`; } else { action = `<div id="${value.name}-action" class='select-all'>All (${value.subValues.length})</div>`; } filtersMarkup += ` <div> ${searchbar} <div class="list-selected-all"> <div id="${value.name}">${value.checked.length} Selected</div> ${action} </div> <div class="product_container"> ${valuesMarkup} </div> </div> `; } else { $.each(value.subValues, function(ind, val) { if (value.name === "status" && !checkIdURL()) { $("#" + val.toLowerCase().split(" ").join("-")).text( val + " " + "(" + value.count[ind] + ")" ); } valuesMarkup += ` <div class="${value.name}"> <div class="ocr-input ocr-input--type-checkbox d-flex align-items-start" id="${ value.name }-item"> <input type="checkbox" class="ocr-input__input products-child-checkbox" name="atomic-checkbox" value="${val}" id="${ value.name }-${ind}"${checkData(val) ? "checked" : ""}> <label class="ocr-input__label" for="${ value.name }-${ind}">${val}</label> </div> </div> `; }); let action = ""; if (value.checked.length > 0) { action = `<div id="${value.name}-action" class='select-all'>Clear all</div>`; } else { action = `<div id="${value.name}-action" class='select-all'>All (${value.subValues.length})</div>`; } filtersMarkup += ` <div> <div class="list-selected-all"> <div id="${value.name}">${value.checked.length} Selected</div> ${action} </div> ${valuesMarkup} </div> `; } } }); if (item.includes("menu-list-new-updated-azure")) { let currentDate = new Date(); let month = currentDate.getUTCMonth() + 1; let year = currentDate.getUTCFullYear(); if (month < 10) { month = "0" + month; } let yearAndMonth = year + "-" + month; filtersMarkup += ` <form> <input id="calender" type="month" name="Calender" min="2000-01" max="${yearAndMonth}"/> </form>`; } $("#" + item).html(filtersMarkup); } }); $.each(displayFacetsValues, function(index, value) { $.each(value.subValues, function(ind, val) { let id = value.name + "-" + ind; $("#" + id).on("change", function(e) { toggleCheckBox(e); if (this.checked) { if (!value.checked.includes(this.value)) { value.checked.push(this.value); } } else { if (value.checked.includes(this.value)) { value.checked.splice(value.checked.indexOf(this.value), 1); } } $("#" + value.name).text(value.checked.length + " Selected"); if (value.checked.length > 0) { $("#" + actionId).text("Clear all"); } else { var text = "All " + `(${value.subValues.length})`; $("#" + actionId).text(text); } }); }); let actionId = value.name + "-" + "action"; $("#" + actionId).on("click", function(e) { let action = $(this).text(); value.checked = []; $.each(value.subValues, function(ind, val) { let id = value.name + "-" + ind; actionText = action.split(" ")[0]; if (actionText === "All") { $("#" + id).each(function() { if ($(this).is(":visible")) { $(this).prop("checked", true).trigger("change"); } }); } else { $("#" + id).each(function() { $(this).prop("checked", false).trigger("change"); $("#" + id).html(this[0]); value.checked.splice(value.checked.indexOf(this.value), 1); }); } }); $("#" + value.name).text(value.checked.length + " Selected"); if (value.checked.length > 0) { $("#" + actionId).text("Clear all"); } else { var text = "All " + `(${value.subValues.length})`; $("#" + actionId).text(text); } }); $(document).on("input", "#product-search", function() { const searchTerm = $("#product-search").val()?.toLowerCase().trim(); if (searchTerm === "") { $(".product").each(function() { $(this).show(); }); $("#" + value.name).text(value.checked.length + " Selected"); if (value.checked.length > 0) { $("#" + actionId).text("Clear all"); } else { var text = "All " + `(${value.subValues.length})`; $("#" + actionId).text(text); } } }); }); } renderDropDown(); $(document).on("click", "#product-search-button", function(e) { const searchTerm = $("#product-search").val().toLowerCase().trim(); $(".product").each(function() { const productName = $(this).find("label").text().toLowerCase(); if (productName.includes(searchTerm)) { $(this).show(); } else { $(this).hide(); } }); }); function checkForSection(sectionName, array) { let result = false; if (array.length === 0) { result = false; } else { $.each(array, function(ind, val) { if (val.section === sectionName) { result = true; } }); } return result; } //save filter code for azure and m365 function saveFilters(type) { const newDate = new Date(); let calenderValue; let newOrUpdated = []; let newOrUpdatedCreated; let newOrUpdatedModified; if ($("#calender").val()) { calenderValue = $("#calender").val(); if (JSON.parse(localStorage.getItem("CalendarDate")) != "") { removeData(JSON.parse(localStorage.getItem("CalendarDate"))); } addData(convertToISOMD(calenderValue)); localStorage.setItem( "CalendarDate", JSON.stringify(convertToISOMD(calenderValue)) ); } // Function to get current date, last week, and last month function getDateInfo() { const today = new Date(); // Current date // Last week const lastWeek = new Date(today); lastWeek.setDate(today.getDate() - 7); // Subtract 7 days // Last month const lastMonth = new Date(today); lastMonth.setMonth(today.getMonth() - 1); // Subtract 1 month // Format date in DD/MM/YYYY const formatDate = (date) => { return date.toLocaleDateString("en-GB", { day: "2-digit", month: "2-digit", year: "numeric", }); }; return { today: formatDate(today), lastWeek: formatDate(lastWeek), lastMonth: formatDate(lastMonth), }; } function convertToISOMD(dateString) { const [year, month] = dateString.split("-").map(Number); const date = new Date(Date.UTC(year, month - 1, 1)); return date.toISOString(); } const dateInfo = getDateInfo(); if ( $( '#menu-list-new-updated-m365 input[name="category1"]:checked' ).val() == "all" ) { newOrUpdatedCreated = dateInfo.today; } else if ( $( '#menu-list-new-updated-m365 input[name="category1"]:checked' ).val() == "last-week" ) { newOrUpdatedCreated = dateInfo.lastWeek; } else if ( $( '#menu-list-new-updated-m365 input[name="category1"]:checked' ).val() == "last-month" ) { newOrUpdatedCreated = dateInfo.lastMonth; } if ( $( '#menu-list-new-updated-m365 input[name="category2"]:checked' ).val() == "all" ) { newOrUpdatedModified = dateInfo.today; } else if ( $( '#menu-list-new-updated-m365 input[name="category2"]:checked' ).val() == "last-week" ) { newOrUpdatedModified = dateInfo.lastWeek; } else if ( $( '#menu-list-new-updated-m365 input[name="category2"]:checked' ).val() == "last-month" ) { newOrUpdatedModified = dateInfo.lastMonth; } if ( calenderValue !== "" && calenderValue !== null && calenderValue?.length > 0 ) { newOrUpdated.push(convertToISOMD(calenderValue)); } newDate.setDate(newDate.getDate()); let savedFilters = { expiresAt: newDate, newOrUpdated, newOrUpdatedCreated, newOrUpdatedModified, }; const azureProduct = []; if (type === "azure") { const childcheckboxes = $("#menu-list-azure-product").find( ".products-child-checkbox:checked" ); $(childcheckboxes).each(function(index, val) { const present = checkForSection(val.id.split("-")[0], azureProduct); if (!present) { const obj = { section: val.id.split("-")[0], values: [], }; azureProduct.push(obj); } }); $(azureProduct).each(function(index, sectionData) { $(childcheckboxes).each(function(index, val) { if (sectionData.section === val.id.split("-")[0]) { sectionData.values.push(val.value); } }); }); } $.each(displayFacetsValues, function(index, value) { if (type === "azure" && value.name === "productCategory") { savedFilters[value.name] = azureProduct; localStorage.setItem( "save-filters-azure", JSON.stringify(savedFilters) ); } else { savedFilters[value.name] = value.checked; $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { localStorage.setItem("save-filters-m365", JSON.stringify(savedFilters)) } else if ($(this).hasClass("azure_filter_container")) { localStorage.setItem("save-filters-azure", JSON.stringify(savedFilters)) } }); } }); } $(document).on("click", ".azure-save-filters", function(e) { e.currentTarget.setAttribute("href", "javascript:void(0)"); saveFilters("azure"); }); $(document).on("click", ".m365-save-filters", function(e) { e.currentTarget.setAttribute("href", "javascript:void(0)"); saveFilters("m365"); }); const childcheckboxesM365 = $(".m365_filter_container .dropdown-menu").find( ".products-child-checkbox" ); const childcheckboxesAzure = $( ".azure_filter_container .dropdown-menu" ).find(".products-child-checkbox"); $(document).on("change", childcheckboxesM365, function(e) { saveFilters("m365"); }); $(document).on("change", childcheckboxesAzure, function(e) { saveFilters("azure"); }); let productValues = []; // Generate filters markup var azureProductMarkup = ""; var filtersAzureProductMarkup = ""; $.each(productFilters, function(index, value) { if (value.name === "productCategory") { $.each(value.values, function(index, val) { var obj = { name: "", subValues: [], checked: [], }; if (val?.value !== null) { obj.name = val.value; } $.each(val.subFacets, function(ind, item) { $.each(item.values, function(iteration, key) { obj.subValues.push(key.value); }); }); productValues.push(obj); }); } }); $.each(productValues, function(index, value) { var childMarkup = ""; var parentMarkup = ""; parentMarkup = `<div class="product-filters-header"> <div class="ocr-input ocr-input--type-checkbox d-flex product_parent_option"> <input type="checkbox" class="ocr-input__input products-parent-checkbox" name="atomic-checkbox" value="${value.name}" id="products-${index}"/> <label class="ocr-input__label azure_dopdown_parent_label" for="products-${index}">${value.name}</label> <a href="javascript:void(0);" class="btn btn--icon btn--icon-only azure_dropdown_toggle_btn" aria-label="open Microsoft home page" role="button"> <div class="ocr-icon d-inline-flex product-accordion-toggle"> <span class="glyph-append glyph-append-chevron-down" role="img" aria-label=""></span> </div> </a> </div> </div>`; $.each(value.subValues, function(ind, sub) { childMarkup += `<div class="product-filters-children"> <div class="ocr-input ocr-input--type-checkbox d-flex align-items-start"> <input type="checkbox" class="ocr-input__input products-child-checkbox" name="atomic-checkbox" value="${sub}" id="${value.name}-${ind}"> <label class="ocr-input__label azure_dopdown_label" for="${value.name}-${ind}">${sub}</label> </div> </div> `; }); filtersAzureProductMarkup += ` <li id="parent-${index}"> <div class="product-filters-parent"> ${value.subValues.length != 0 ? parentMarkup : ''} ${childMarkup} </div> </li> `; }); azureProductMarkup += ` <div class="dropdown_popup"> <div class="row"> <div class="search-container "> <div class="search-label mb-2">SEARCH PRODUCTS</div> <div class="search-bar theme-day search-bar--size-sm"> <form role="search"> <div class="input-master"> <div class="input-master__search"> <input type="search" class="label-lead" id="searchAzureProduct" placeholder="Search product name"/> </div> <button class="btn btn--icon-only btn--sm" id="search-button" aria-label="search"> <span class="glyph-prepend glyph-prepend-zoom" id="search-icon"></span> </button> </div> </form> </div> <div class="error-msg my-1">No matches found.</div> </div> <div class="text-right mt-4 show-hide-link"> <!--<span class="see_all_link" >See All (<span class="total_count">0</span>)</span> <span class="hide_all_link" style="display: none;">Hide All</span>--> <a href="#" class="btn btn--secondary mr-2 expand_all_btn" aria-label="Expand all">Expand all</a> <a href="#" class="btn btn--secondary collapse_all_btn" aria-label="Collapse all">Collapse all</a> </div> </div> <div class="row my-3"> <div class="col-md-6 col-4 selected_count"> (0) Selected </div> <div class="col-md-6 col-2 text-right clear_all_link"> <span>Clear All</span> </div> </div> <ul class="product-filters-list"> ${filtersAzureProductMarkup} </ul> </div> `; $("#menu-list-azure-product").html(azureProductMarkup); // Function to update selected count function updateSelectedCount() { const selectedCount = $("#menu-list-azure-product").find( ".products-child-checkbox:checked" ).length; $(".selected_count").text(`${selectedCount} Selected`); $(".clear_all_link").toggle(selectedCount > 0); } // Function to update total count function updateTotalCount() { const totalCount = $(".products-child-checkbox").length; $(".total_count").text(totalCount); } // Function to clear all checkboxes function clearAllCheckboxes() { $("#menu-list-azure-product") .find(".products-child-checkbox") .prop("checked", false); $("#menu-list-azure-product") .find(".products-parent-checkbox") .prop("checked", false) .prop("indeterminate", false); updateSelectedCount(); } // Function to expand all sections function expandAll() { $(".product-filters-parent").each(function() { // Add the expanded class to parent elements $(this).addClass("expanded"); // Update the icon to reflect the expanded state $(this) .find(".product-accordion-toggle .glyph-append") .removeClass("glyph-append-chevron-down") .addClass("glyph-append-chevron-up") .attr("aria-label", "Collapse"); // Show child elements $(this).find(".product-filters-children").show(); }); } // Function to collapse all sections function collapseAll() { $(".product-filters-parent").each(function() { // Remove the expanded class from parent elements $(this).removeClass("expanded"); // Update the icon to reflect the collapsed state $(this) .find(".product-accordion-toggle .glyph-append") .removeClass("glyph-append-chevron-up") .addClass("glyph-append-chevron-down") .attr("aria-label", "Expand"); // Hide child elements $(this).find(".product-filters-children").hide(); }); } const setParentCheckboxState = ( checkedSiblings, siblingCheckboxes, parentCheckbox ) => { if (siblingCheckboxes.length === checkedSiblings.length) { $(parentCheckbox).prop("checked", true).prop("indeterminate", false); } else if (checkedSiblings.length === 0) { $(parentCheckbox).prop("checked", false).prop("indeterminate", false); } else { $(parentCheckbox).prop("indeterminate", true); } printData(); }; const setDuplicateProductCheckboxes = function( currentCheckbox, isChecked ) { const value = $(currentCheckbox).val(); if (isChecked) { addData(value); } else { removeData(value); } $("#menu-list-azure-product") .find( `input[type="checkbox"][value="${value}"]:not(#${$( currentCheckbox ).attr("id")})` ) .each(function() { $(this).prop("checked", isChecked); }); }; let localStorageData $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { localStorageData = JSON.parse(localStorage.getItem("data-m365")); } else if ($(this).hasClass("azure_filter_container")) { localStorageData = JSON.parse(localStorage.getItem("data-azure")); } }); localStorageData.map((item) => $("#menu-list-azure-product") .find(`input[type="checkbox"][value="${item}"]`) .prop("checked", true) ); $('#menu-list-new-updated-m365 input[name="category1"]').on( "click", function(e) { if (e.target.checked && e?.target?.value !== null) { if ( e.target.name === "category1" && !JSON.parse(localStorage.getItem("data-m365")).includes( "New within" ) ) { if (window.location.href.includes("New+within")) { for ( i = 0; i < localStorage.getItem("specialItem").split(",").length; i++ ) { removeData( localStorage .getItem("specialItem") .split(",")[i].replace(/['"]+/g, "") ); } } addData("New within: " + e.target.value); localStorage.setItem( "specialItem", JSON.stringify("New within: " + e.target.value) ); } } } ); $('#menu-list-new-updated-m365 input[name="category2"]').on( "click", function(e) { if (e.target.checked && e?.target?.value !== null) { if ( e.target.name === "category2" && !JSON.parse(localStorage.getItem("data-m365")).includes( "Changed within" ) ) { if (window.location.href.includes("Changed+within")) { for ( i = 0; i < localStorage.getItem("ChangedItem").split(",").length; i++ ) { removeData( localStorage .getItem("ChangedItem") .split(",")[i].replace(/['"]+/g, "") ); } } addData("Changed within: " + e.target.value); localStorage.setItem( "ChangedItem", JSON.stringify("Changed within: " + e.target.value) ); } } } ); function parentCheckboxBehaviour() { const allChecked = $(".product-filters-list li").find( ".product-filters-parent input[type=checkbox]" ); $.each(allChecked, function(index, parentCheckbox) { for (let i = 0; i <= allChecked.length; i++) { if (parentCheckbox.id === `products-${i}`) { const siblingCheckboxes = $(`#parent-${i}`).find( ".product-filters-children input[type=checkbox]" ); const checkedSiblings = $(`#parent-${i}`).find( ".product-filters-children input[type=checkbox]:checked" ); setParentCheckboxState( checkedSiblings, siblingCheckboxes, parentCheckbox ); } } }); } parentCheckboxBehaviour(); $("#menu-list-azure-product").on( "change", ".products-child-checkbox", function() { setDuplicateProductCheckboxes(this, $(this).is(":checked")); updateSelectedCount(); parentCheckboxBehaviour(); if (JSON.parse(localStorage.getItem("data-azure")).length == 0) { for (let i = 0; i < window.location.href.split("?").length; i++) { if ( window.location.href.split("?")[1].includes("searchterms=") || window.location.href.split("?")[1].includes("sortby=") ) { const res = new URL(window.location).href .split("?")[1] .split("&") .filter((item) => !item.includes("filters")) .join("&"); window.history.pushState({}, "", window.location.origin + window.location.pathname + "?" + res ); } else { window.history.pushState({}, "", window.location.href .split("?") .filter((item) => !item.includes("filters")) ); } } } } ); $(document).on("change", ".products-parent-checkbox", function() { const isChecked = $(this).is(":checked"); if (!isChecked) { printData(); } $(this) .closest(".product-filters-parent") .find(".product-filters-children input[type=checkbox]") .each(function() { $(this).prop("checked", isChecked); setDuplicateProductCheckboxes(this, isChecked); }); updateSelectedCount(); parentCheckboxBehaviour(); if (JSON.parse(localStorage.getItem("data-azure")).length == 0) { for (let i = 0; i < window.location.href.split("?").length; i++) { if ( window.location.href.split("?")[1].includes("searchterms=") || window.location.href.split("?")[1].includes("sortby=") ) { const res = new URL(window.location).href .split("?")[1] .split("&") .filter((item) => !item.includes("filters")) .join("&"); window.history.pushState({}, "", window.location.origin + window.location.pathname + "?" + res ); } else { window.history.pushState({}, "", window.location.href .split("?") .filter((item) => !item.includes("filters")) ); } } } }); // Handle click event on .product-accordion-toggle $("#menu-list-azure-product").on( "click", ".product-accordion-toggle", function() { var $parent = $(this).closest(".product-filters-parent"); $parent.toggleClass("expanded"); var $span = $(this).find("span.glyph-append"); if ($parent.hasClass("expanded")) { $span .removeClass("glyph-append-chevron-down") .addClass("glyph-append-chevron-up"); $span.attr("aria-label", "Collapse"); $parent.find(".product-filters-children").show(); } else { $span .removeClass("glyph-append-chevron-up") .addClass("glyph-append-chevron-down"); $span.attr("aria-label", "Expand"); $parent.find(".product-filters-children").hide(); } } ); function clearPillsAzureDropdown() { const result = $(".product-filters-list").find( "li .product-filters-parent .product-filters-children input[type=checkbox]:checked" ); $.each(result, function(index, item) { removeData(item.value); if (JSON.parse(localStorage.getItem("data-azure")).length == 0) { for (let i = 0; i < window.location.href.split("?").length; i++) { if ( window.location.href.split("?")[1].includes("searchterms=") || window.location.href.split("?")[1].includes("sortby=") ) { const res = new URL(window.location).href .split("?")[1] .split("&") .filter((item) => !item.includes("filters")) .join("&"); window.history.pushState({}, "", window.location.origin + window.location.pathname + "?" + res ); } else { window.history.pushState({}, "", window.location.href .split("?") .filter((item) => !item.includes("filters")) ); } } } }); } // Clear All functionality $(document).on("click", ".clear_all_link", function() { clearPillsAzureDropdown(); clearAllCheckboxes(); }); // Expand All functionality $(document).on("click", ".expand_all_btn", function(e) { e.preventDefault(); expandAll(); }); // Collapse All functionality $(document).on("click", ".collapse_all_btn", function(e) { e.preventDefault(); collapseAll(); }); function performSearch() { const searchTerm = $("#searchAzureProduct").val()?.toLowerCase().trim(); let hasVisible = false; $(".product-filters-parent, .product-filters-children").each(function() { const productName = $(this).find("label").text()?.toLowerCase(); if (productName.includes(searchTerm)) { $(this).show(); hasVisible = true; } else { $(this).hide(); } }); // Show or hide the error message based on whether there are visible items $(".error-msg").toggle(!hasVisible); } // Event handler for the search button $(document).on("click", "#search-button", function(e) { e.preventDefault(); performSearch(); }); // Event handler for the search input clearing $(document).on("input", "#searchAzureProduct", function() { if ($(this).val().trim() === "") { $(".product-filters-parent, .product-filters-children").show(); $(".error-msg").hide(); } }); if ( window.location.href.includes("filters") && $(".azure_filter_container").hasClass("azure_filter_container") ) { $("#calender")[0].value = JSON.parse( localStorage.getItem("CalendarDate") ); } if ( window.location.href.includes("filters") && $(".m365_filter_container").hasClass("m365_filter_container") ) { if (window.location.href.includes("New+within")) { if ( window.location.href.includes("New+within%3A+last-week") && !window.location.href.includes("New+within%3A+last-month") ) { $( '#menu-list-new-updated-m365 input[name="category1"][value="last-week"]' )[0].checked = true; } else if ( window.location.href.includes("New+within%3A+last-month") && !window.location.href.includes("New+within%3A+last-week") ) { $( '#menu-list-new-updated-m365 input[name="category1"][value="last-month"]' )[0].checked = true; } else if ( window.location.href.includes("New+within%3A+all") ) { $( '#menu-list-new-updated-m365 input[name="category1"][value="all"]' )[0].checked = true; } } if (window.location.href.includes("Changed+within")) { if ( window.location.href.includes("Changed+within%3A+last-week") && !window.location.href.includes("Changed+within%3A+last-month") ) { $( '#menu-list-new-updated-m365 input[name="category2"][value="last-week"]' )[0].checked = true; } else if ( window.location.href.includes("Changed+within%3A+last-month") && !window.location.href.includes("Changed+within%3A+last-week") ) { $( '#menu-list-new-updated-m365 input[name="category2"][value="last-month"]' )[0].checked = true; } else if ( window.location.href.includes("Changed+within%3A+all") ) { $( '#menu-list-new-updated-m365 input[name="category2"][value="all"]' )[0].checked = true; } } } if ($(".m365_filter_container").hasClass("m365_filter_container")) { if (localStorage.getItem("data-m365").includes("New within")) { if ( localStorage .getItem("data-m365") .includes("New within: last-week") && !localStorage .getItem("data-m365") .includes("New within: last-month") ) { $( '#menu-list-new-updated-m365 input[name="category1"][value="last-week"]' )[0].checked = true; } else if ( localStorage .getItem("data-m365") .includes("New within: last-month") && !localStorage .getItem("data-m365") .includes("New within: last-week") ) { $( '#menu-list-new-updated-m365 input[name="category1"][value="last-month"]' )[0].checked = true; } else if ( localStorage.getItem("data-m365").includes("New within: all") ) { $( '#menu-list-new-updated-m365 input[name="category1"][value="all"]' )[0].checked = true; } } if (localStorage.getItem("data-m365").includes("Changed within")) { if ( localStorage .getItem("data-m365") .includes("Changed within: last-week") && !localStorage .getItem("data-m365") .includes("Changed within: last-month") ) { $( '#menu-list-new-updated-m365 input[name="category2"][value="last-week"]' )[0].checked = true; } else if ( localStorage .getItem("data-m365") .includes("Changed within: last-month") && !localStorage .getItem("data-m365") .includes("Changed within: last-week") ) { $( '#menu-list-new-updated-m365 input[name="category2"][value="last-month"]' )[0].checked = true; } else if ( localStorage.getItem("data-m365").includes("Changed within: all") ) { $( '#menu-list-new-updated-m365 input[name="category2"][value="all"]' )[0].checked = true; } } } // Show the dropdown container when the filter button is clicked $(".filter_btn").on("click", function() { $(".dropdown_container").show(); }); // Hide the dropdown container when the cancel button is clicked $(".cancel_btn").on("click", function() { $(".dropdown_container").hide(); }); // Initial setup updateTotalCount(); updateSelectedCount(); } // Handle arrow dropdown direction for mobile function isMobileDevice() { return window.innerWidth <= 800; } if (isMobileDevice()) { $(".dropdown_container .list-item__trailing") .find(".glyph-prepend") .removeClass("glyph-prepend-chevron-down") .addClass("glyph-prepend-chevron-right"); } $(".input-master__search input").attr("maxlength", "255"); }, 500) }); $(document).ready(function() { $(document).on("click", ".dropdown-menu .input-master", function() { const searchTerm = $("#product-search").val()?.toLowerCase().trim(); $(".product").each(function() { const productName = $(this).find("label").text()?.toLowerCase(); if (productName.includes(searchTerm)) { $(this).show(); } else { $(this).hide(); } }); }); });</script> </div> </div> </div> <div class="html-markup aem-GridColumn aem-GridColumn--default--12" data-component-id="c86feede7b7d6fed7bdfc861354e2af8" oc-component-name="html-markup"> <div class="oc-html-markup" data-oc="oc5d42" id="html-markup-oc5d42"> <div> <script>$(document).ready(function() { setTimeout(() => { var applyFilter = document.getElementById('applyfilter'); var saveFilter = document.getElementById('savefilter'); var activeFilterList = document.getElementById('roadmap-pillbar'); let topResult = 20; let skipResult = 0; let apiURL = $(".upper-container")[0].nextElementSibling.attributes["api"].value; function sanitizeInput(input) { if (typeof input === "string") { const map = { "&": "%26", "<": "&lt", ">": "&gt", "/": "&#x2F;", "`": "&#96;", "=": "&#x3D;", ";": "&#59;", "(": "&#40;", ")": "&#41;", }; const regex = /[&<>/`=;()]/g; if (regex.test(input)) { return input.replace(regex, (char) => map[char]); } else { console.log( "Input does not contain characters that need to be sanitized." ); } } else { console.warn("Input is not a string. Returning original value."); } return input; } const hideClearAll = () => { document.head.insertAdjacentHTML('beforeend', `<style>#clearPillbar {display: none;}</style>`); } function checkIdURL() { return new URL(window.location).search.includes("id="); } function getSearchValueFromURL() { const urlOnLoad = new URL(window.location); const urlArray = urlOnLoad.search.split("&"); let searchValue; for (let i = 0; i < urlArray.length; i++) { if (urlArray[i]?.includes("searchterms")) { searchValue = urlArray[i].split("=")[1]; } } return searchValue; } function findMobileSortValue() { let radioText = $(".sort-by-dropdown-mobile input[type=radio]:checked")[0] .value; let sortValue; if (radioText == "general-availability-newest-to-oldest") { sortValue = "generalAvailabilityDate desc"; } else { if (radioText == "preview-availability-newest-to-oldest") { sortValue = "previewAvailabilityDate desc"; } else { if (radioText == "private-preview-availability-newest-to-oldest") { sortValue = "privatePreviewAvailabilityDate desc"; } else { if (radioText == "recently-modified-newest-to-oldest") { sortValue = "modified desc"; } else { if (radioText == "general-availability-oldest-to-newest") { sortValue = "generalAvailabilityDate"; } else { if (radioText == "preview-availability-oldest-to-newest") { sortValue = "previewAvailabilityDate"; } else { if ( radioText == "private-preview-availability-oldest-to-newest" ) { sortValue = "privatePreviewAvailabilityDate"; } else { sortValue = "modified"; } } } } } } } return sortValue; } function findSortValue() { let radioText = $(".sort-by-dropdown input[type=radio]:checked")[0]?.value; let sortValue; let innerTextValue; if (radioText == "general-availability-newest-to-oldest") { sortValue = "generalAvailabilityDate desc"; innerTextValue = "Rollout Start: Newest to oldest"; } else { if (radioText == "preview-availability-newest-to-oldest") { sortValue = "previewAvailabilityDate desc"; innerTextValue = "Preview Availability: Newest to oldest"; } else { if (radioText == "private-preview-availability-newest-to-oldest") { sortValue = "privatePreviewAvailabilityDate desc"; innerTextValue = "Private Preview Availability: Newest to oldest"; } else { if (radioText == "recently-modified-newest-to-oldest") { sortValue = "modified desc"; innerTextValue = "Recently Modified: Newest to oldest"; } else { if (radioText == "general-availability-oldest-to-newest") { sortValue = "generalAvailabilityDate"; innerTextValue = "Rollout Start: Oldest to newest"; } else { if (radioText == "preview-availability-oldest-to-newest") { sortValue = "previewAvailabilityDate"; innerTextValue = "Preview Availability: Oldest to newest"; } else { if ( radioText == "private-preview-availability-oldest-to-newest" ) { sortValue = "privatePreviewAvailabilityDate"; innerTextValue = "Private Preview Availability: Oldest to newest"; } else { sortValue = "modified"; innerTextValue = "Recently Modified: Oldest to newest"; } } } } } } } return [sortValue, innerTextValue]; } function getExtendedApiURL(apiURL, searchValue, finalFormulla, topResult, skipResult) { // Sanitize the search value if provided let result = ""; if (searchValue !== undefined && searchValue !== "") { result = `&search="${sanitizeInput(decodeURI(searchValue))}"`; } // Handle filter result based on finalFormulla let filterResult = finalFormulla === "" ? "" : `&filter=${finalFormulla.replaceAll("&", "%26")}`; // Build the extended API URL with the query parameters let extendedApiURL = apiURL + `?$count=true&includeFacets=true&top=${topResult}&skip=${skipResult}&filterInput&searchInput&orderby=${ window.innerWidth <= 800 ? findMobileSortValue() : findSortValue()[0] }`; // Replace placeholders with actual values for search and filter let updatedApiURL = extendedApiURL.replace("&searchInput", result); let updatedFilterApiURL = updatedApiURL.replace("&filterInput", filterResult); // Return the final API URL return updatedFilterApiURL; } function applyFilterAPI() { let checkedFilter; $("div").each(function() { if ($(this).hasClass("m365_filter_container")) { checkedFilter = JSON.parse(localStorage?.getItem("save-filters-m365")); } else if ($(this).hasClass("azure_filter_container")) { checkedFilter = JSON.parse(localStorage?.getItem("save-filters-azure")); } }); if (checkedFilter === null) { checkedFilter = ""; } const getValue = (key, defaultValue) => checkedFilter[key] ?? defaultValue; let cloudInstanceapplyApiUrlValue = getValue("cloudInstance", ""); let platformapplyApiUrlValue = getValue("platform", ""); let productapplyApiUrlValue = getValue("product", ""); let releaseRingapplyApiUrlValue = getValue("releaseRing", ""); let productCategoryValue = getValue("productCategory", []); let updateTypeApiUrlValue = getValue("tags", ""); // Flatten product category values let productCategoryApiValue = [ ...new Set(productCategoryValue.flatMap((item) => item.values)), ]; let createdDateValue = checkedFilter != undefined && checkedFilter?.newOrUpdatedCreated != undefined ? checkedFilter?.newOrUpdatedCreated : ""; let modifiedModifedValue = checkedFilter != undefined && checkedFilter?.newOrUpdatedModified != undefined ? checkedFilter?.newOrUpdatedModified : ""; let statusapplyApiUrlValue = checkedFilter != undefined && checkedFilter?.status != undefined ? checkedFilter?.status : ""; let newOrUpdatedapplyApiUrlValue = checkedFilter != undefined && checkedFilter?.newOrUpdated != undefined ? checkedFilter?.newOrUpdated : ""; let newOrUpdateNextMonthdapplyApiUrlValue; if ( checkedFilter != undefined && checkedFilter?.newOrUpdated != undefined && checkedFilter?.newOrUpdated.length > 0 ) { const date = new Date(checkedFilter?.newOrUpdated); date.setMonth(date.getMonth() + 1); newOrUpdateNextMonthdapplyApiUrlValue = date.toISOString(); } else { (""); } let createArray = []; let modifiedArray = []; function convertToISO(dateString) { if (dateString) { const [day, month, year] = dateString.split("/").map(Number); const date = new Date(Date.UTC(year, month - 1, day)); return date.toISOString(); } } let createdApplyApiUrlValue = convertToISO(createdDateValue); let modifiedApplyApiUrlValue = convertToISO(modifiedModifedValue); if (statusapplyApiUrlValue.length > 0) { const result = statusapplyApiUrlValue .map((value) => `'${value}'`) .join(", "); statusapplyApiUrlValue = "status in (" + result + ")"; } if (newOrUpdatedapplyApiUrlValue.length > 0) { const result = newOrUpdatedapplyApiUrlValue .map((value) => `${value}`) .join(", "); newOrUpdatedapplyApiUrlValue = `modified gt ${result} and modified lt ${newOrUpdateNextMonthdapplyApiUrlValue}`; } if (createdApplyApiUrlValue != "" && createdApplyApiUrlValue != undefined) { createdApplyApiUrlValue = $('#menu-list-new-updated-m365 input[name="category1"]:checked').val() == "all" ? `created lt ${new Date().toISOString()}` : `created gt ${createdApplyApiUrlValue} and created lt ${new Date().toISOString()}`; createArray.push(createdApplyApiUrlValue); } if ( modifiedApplyApiUrlValue != "" && modifiedApplyApiUrlValue != undefined ) { modifiedApplyApiUrlValue = $( '#menu-list-new-updated-m365 input[name="category2"]:checked' ).val() == "all" ? `modified lt ${new Date().toISOString()}` : `modified gt ${modifiedApplyApiUrlValue} and modified lt ${new Date().toISOString()}`; modifiedArray.push(modifiedApplyApiUrlValue); } const formatQueryParam = (paramName, values) => { if (values.length === 0) return ""; const result = values.map((value) => `'${value}'`).join(", "); return values.length > 1 ? `${paramName}/any(f:f in (${result}))` : `${paramName}/any(f:f eq ${result})`; }; const filtersArray = [ statusapplyApiUrlValue, formatQueryParam("cloudInstances", cloudInstanceapplyApiUrlValue), formatQueryParam("platforms", platformapplyApiUrlValue), formatQueryParam("products", productapplyApiUrlValue), formatQueryParam("releaseRings", releaseRingapplyApiUrlValue), createArray, modifiedArray, formatQueryParam("products", productCategoryApiValue), formatQueryParam("tags", updateTypeApiUrlValue), newOrUpdatedapplyApiUrlValue, ]; const cleanedArray = filtersArray.filter((item) => item.length > 0); return cleanedArray.join(" and "); } function accordionContainer(resp) { // Generate the filters and products function statusBoxes(status) { if (status?.toLowerCase() === "in development") { return ` <div class="status-box-container"> <div class="box" filled=""></div> <div class="box"></div> <div class="box"></div> </div> <div class="legend__text__accordion">${status.toUpperCase()}</div>`; } if ( status?.toLowerCase() === "rolling out" || status?.toLowerCase() === "in preview" ) { return ` <div class="status-box-container"> <div class="box" filled=""></div> <div class="box" filled=""></div> <div class="box"></div> </div> <div class="legend__text__accordion">${status.toUpperCase()}</div>`; } if ( status?.toLowerCase() === "launched" || status?.toLowerCase() === "now available" ) { return ` <div class="status-box-container"> <div class="box" filled=""></div> <div class="box" filled=""></div> <div class="box" filled=""></div> </div> <div class="legend__text__accordion">${status.toUpperCase()}</div>`; } return ""; } let resultMarkup = ""; $("div").each(function() { if ($(this).hasClass("m365_accordion")) { const filterMarkupM365 = (originalMarkup) => { let parsedMarkup = originalMarkup; // limited set of match / replace regex rules. let replaceRules = [{ // strip unnecessary tags match: new RegExp(/<\/?(div|span|style)[^>]*>/, "gi"), replace: "", }, { // strip unnecessary attributes match: new RegExp(/ ?(class|style|id)=["'][^"']*["']/, "gi"), replace: "", }, { match: new RegExp( /<h(1|2|3|4|5|6)[^>]*>(<(strong|b|u|i)>)?([^<]*)(<\/(strong|b|u|i)>)?<\/h(1|2|3|4|5|6)>/, "gi" ), replace: '<h3 class="h5">$4</h3>', }, { // convert h1,h2,h4,h5,h6 to h3 and remove <u> in side heading tags match: new RegExp( /<h[1-6][^>]*>(?:(?:<strong>)?(?:<u>)?(?:<b>)?(?:<i>)?([^<]+)(?:<\/i>)?(?:<\/b>)?(?:<\/u>)?(?:<\/strong>)?<\/h[1-6]>)/, "gi" ), replace: '<h3 class="h5">$1</h3>', }, { // Add bootstrap stripe table style match: new RegExp(/<table ?([^>]*)>/, "gi"), replace: '<table class="table table-striped" $1>', }, ]; replaceRules.forEach((rule) => { parsedMarkup = parsedMarkup.replaceAll(rule.match, rule.replace); }); return parsedMarkup; }; $.each(resp?.value, function(index, value) { let moreInfoUrls = ""; if (value?.moreInfoUrls?.length > 0) { moreInfoUrls = ` <a class="link_more_info" target="_blank" href="${value.moreInfoUrls[0]}">More info</a>`; } function formatDate(isoDateString) { const date = new Date(isoDateString); const day = String(date.getUTCDate()).padStart(2, "0"); const month = String(date.getUTCMonth() + 1).padStart(2, "0"); const year = date.getUTCFullYear(); return `${month}/${day}/${year}`; } let availabilitiesMarkup = ""; var customOrder = ["Preview", "General Availability"]; let sortedAvailabilities = value.availabilities.sort(function(a, b) { return customOrder.indexOf(a.ring) - customOrder.indexOf(b.ring); }); $.each(sortedAvailabilities, function(i, availability) { availabilitiesMarkup += ` <div> <div class="availability_ring">${availability.ring === "General Availability" ? "ROLLOUT START" : availability.ring.toUpperCase() || availability.ring === "Preview" ? "PREVIEW AVAILABLE" : availability.ring.toUpperCase()}</div> <div class="availability_month_year">${ availability.month } ${availability.year}</div> </div> `; }); const uniqueId = `accordion-${value.id}`; function roadmapM365Tags() { for (let i = 0; i < value.products.length; i++) { return value.products.map( (item) => `<div class="product_bg">${item}</div>` ); } } let createdDateFormatted = formatDate(value?.created); let modifiedDateFormatted = formatDate(value?.modified); let descriptionValueM365 = value?.description; descriptionValueM365 = filterMarkupM365(descriptionValueM365); resultMarkup += ` <li class="ocr-faq-item accordion_bg mb-4" data-bi-an="${ value.title }"> <div class="ocr-faq-item__content"> <button class="col ocr-faq-item__header faq-collapse collapsed" data-target="#${uniqueId}" aria-expanded="false" data-bi-cn="Accordion Collapse" data-bi-bhvr="7"> <div class="ocr-faq-item__header--title"> <h2 class="lead">${value.title}</h2> <div class="products_list"> ${roadmapM365Tags() ?.toString() ?.replace(/,/g, "")} </div> <div class="accordianRightContainer hide_on_desktop"> <div class="statusBoxes"> ${statusBoxes(value.status)} </div> <div class="availabilities"> ${availabilitiesMarkup} </div> </div> </div> <div class="accordianRightContainer hide_on_mobile "> <div class="statusBoxes"> ${statusBoxes(value.status)} </div> <div class="availabilities"> ${availabilitiesMarkup} </div> </div> </button> <div class="collapse ocr-faq-item__body-wrapper" id="${uniqueId}"> <div class="ocr-faq-item__body"> <div class="description col-sm-8 pl-0">${descriptionValueM365}</div> <div>${moreInfoUrls}</div> <div class="all_sections col-sm-9 pl-0"> <div class="roadMapId_section"> <div class="label roadmap_label">Roadmap ID</div> <div class="value">${value.id}</div> </div> ${ value.cloudInstances.length === 0 ? "" : `<div class="cloudInstance_section"> <div class="label">Cloud instances(s)</div> <div class="value">${value.cloudInstances.join( ", " )}</div> </div>` } ${ value.platforms.length === 0 ? "" : `<div class="platforms_section"> <div class="label">Platform(s)</div> <div class="value">${value.platforms.join( ", " )}</div> </div>` } ${ value.releaseRings.length === 0 ? "" : `<div class="releaseRings_section"> <div class="label">Release phases(s)</div> <div class="value">${value.releaseRings.join( ", " )}</div> </div>` } </div> <div class="updated_dates"> <div class="created_date"> Added to roadmap: <span>${createdDateFormatted}</span> </div> <div class="pipe_divider">|</div> <div class="modified_date"> Last modified: <span>${modifiedDateFormatted}</span> </div> </div> <div class="share_label">Share</div> <div class="share_btns"> <a href="mailto:?subject=${ value.title }&body=Sharing a view of the Microsoft 365 Roadmap with you: ${encodeURIComponent( window.location.origin + window.location.pathname + `?id=${value?.id}` )}" data-bi-cn="Accordion detail - Share email"> <span class="badge badge--size-xs"> <div class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-mail" role="img" aria-label="Accordion detail - Share email" alt="Accordion detail - Share email"></span> </div> </span></a> <a href="${apiURL}/rss/${ value?.id }" target="_blank" data-bi-cn="Accordion detail - Share RSS"> <span class="badge badge--size-xs"> <div class="ocr-icon d-inline-flex rss-icon"> <img class="rss-image" src="/content/dam/microsoft/final/en-us/microsoft-product-and-services/microsoft-365/roadmap/icon-rss-darkblue.svg" aria-label="Accordion detail - Share RSS" alt="Accordion detail - Share RSS"/> </div> </span> </a> <a data-bi-cn="Accordion detail - Share link"> <span class="badge badge--size-xs copyLinkText" id=${ value.id }> <div class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-link" role="img" aria-label="Accordion detail - Share link" alt="Accordion detail - Share link"></span> </div> </span> </a> </div> </div> </div> </div> </li>`; }); } if ($(this).hasClass("azure_accordion")) { const filterMarkup = (originalMarkup) => { let parsedMarkup = originalMarkup; // limited set of match / replace regex rules. let replaceRules = [{ // strip unnecessary tags match: new RegExp(/<\/?(div|span|style)[^>]*>/, "gi"), replace: "", }, { // strip unnecessary attributes match: new RegExp(/ ?(class|style|id)=["'][^"']*["']/, "gi"), replace: "", }, { match: new RegExp( /<h(1|2|3|4|5|6)[^>]*>(<(strong|b|u|i)>)?([^<]*)(<\/(strong|b|u|i)>)?<\/h(1|2|3|4|5|6)>/, "gi" ), replace: '<h3 class="h5">$4</h3>', }, { // convert h1,h2,h4,h5,h6 to h3 and remove <u> in side heading tags match: new RegExp( /<h[1-6][^>]*>(?:(?:<strong>)?(?:<u>)?(?:<b>)?(?:<i>)?([^<]+)(?:<\/i>)?(?:<\/b>)?(?:<\/u>)?(?:<\/strong>)?<\/h[1-6]>)/, "gi" ), replace: '<h3 class="h5">$1</h3>', }, { // Add bootstrap stripe table style match: new RegExp(/<table ?([^>]*)>/, "gi"), replace: '<table class="table table-striped" $1>', }, ]; replaceRules.forEach((rule) => { parsedMarkup = parsedMarkup.replaceAll(rule.match, rule.replace); }); return parsedMarkup; }; $.each(resp?.value, function(index, value) { let moreInfoUrls = ""; if (value?.moreInfoUrls?.length > 0) { moreInfoUrls = ` <a class="link_more_info" target="_blank" href="${value?.moreinfoUrls[0]}">More info</a>`; } function formatDate(isoDateString) { const date = new Date(isoDateString); const day = String(date.getUTCDate()).padStart(2, "0"); const month = String(date.getUTCMonth() + 1).padStart(2, "0"); const year = date.getUTCFullYear(); return `${month}/${day}/${year}`; } let availabilitiesMarkup = ""; $.each(value?.availabilities, function(i, availability) { availabilitiesMarkup += ` <div> <div class="availability_ring">${availability.ring.toUpperCase()}</div> <div class="availability_month_year">${ availability.month } ${availability.year}</div> </div> `; }); // Create a unique ID for each accordion item const uniqueId = `accordion-${value?.id}`; function azureTags() { for (let i = 0; i <= value.products.length; i++) { return value.products.map( (item) => `<div class="product_bg">${item}</div>` ); } } let createdDateFormatted = formatDate(value?.created); let modifiedDateFormatted = formatDate(value?.modified); let descriptionValue = value?.description; descriptionValue = filterMarkup(descriptionValue); resultMarkup += ` <li class="ocr-faq-item accordion_bg mb-4" data-bi-an="${ value.title }"> <div class="ocr-faq-item__content"> <button class="col ocr-faq-item__header faq-collapse collapsed" data-target="#${uniqueId}" aria-expanded="false" data-bi-cn="Accordion Collapse" data-bi-bhvr="7"> <div class="ocr-faq-item__header--title"> <h2 class="lead">${value.title}</h2> <div class="products_list"> ${azureTags() ?.toString() ?.replace(/,/g, "")} </div> <div class="accordianRightContainer hide_on_desktop"> <div class="statusBoxes"> ${ value.availabilities.ring == "Retirement" && statusBoxes(value.status) != null ? statusBoxes("") : statusBoxes(value.status) } </div> <div class="availabilities"> ${availabilitiesMarkup} </div> </div> </div> <div class="accordianRightContainer hide_on_mobile "> <div class="statusBoxes"> ${ value.availabilities.ring == "Retirement" && statusBoxes(value.status) != null ? statusBoxes("") : statusBoxes(value.status) } </div> <div class="availabilities"> ${availabilitiesMarkup} </div> </div> </button> <div class="collapse ocr-faq-item__body-wrapper" id="${uniqueId}"> <div class="ocr-faq-item__body"> <div class="accordion-item col-xl-8">${descriptionValue}</div> <div>${moreInfoUrls}</div> <div class="all_sections col-sm-9 pl-0"> <div class="roadMapId_section"> <div class="label roadmap_label">Azure ID</div> <div class="value">${value.id.toLowerCase()}</div> </div> ${ value.productCategories .length === 0 ? "" : `<div class="cloudInstance_section"> <div class="label">Product Categories(s)</div> <div class="value">${value.productCategories.join( ", " )}</div> </div>` } ${ value.tags.length === 0 ? "" : `<div class="platforms_section"> <div class="label">Update Types(s)</div> <div class="value">${value.tags.join( ", " )}</div> </div>` } </div> <div class="updated_dates"> <div class="created_date"> Added to roadmap: <span>${createdDateFormatted}</span> </div> <div class="pipe_divider">|</div> <div class="modified_date"> Last modified: <span>${modifiedDateFormatted}</span> </div> </div> <div class="share_label">Share</div> <div class="share_btns"> <a href="mailto:?subject=${ value.title }&body=Sharing a view of the Microsoft Azure with you: ${encodeURIComponent( window.location.origin + window.location.pathname + `?id=${value?.id}` )}" data-bi-cn="Accordion detail - Share email"> <span class="badge badge--size-xs"> <div class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-mail" role="img" aria-label="Accordion detail - Share email" alt="Accordion detail - Share email"></span> </div> </span> </a> <a href="${apiURL}/rss/${ value?.id }" target="_blank" data-bi-cn="Accordion detail - Share RSS"> <span class="badge badge--size-xs"> <div class="ocr-icon d-inline-flex rss-icon"> <img class="rss-image" src="/content/dam/microsoft/final/en-us/microsoft-product-and-services/microsoft-365/roadmap/icon-rss-blue.svg" aria-label="Accordion detail - Share RSS" alt="Accordion detail - Share RSS"/> </div> </span> </a> <a data-bi-cn="Accordion detail - Share link"> <span class="badge badge--size-xs copyLinkText" id=${ value.id }> <div class="ocr-icon d-inline-flex"> <span id="accordion-copy-link" class="glyph-prepend glyph-prepend-link" role="img" aria-label="Accordion detail - Share link" alt="Accordion detail - Share link"></span> </div> </span> </a> </div> </div> </div> </div> </li>`; }); } }); $("#accordion-container").html(resultMarkup); } function paginationBlock(resp) { let totalPages = Math.ceil(resp["@odata.count"] / 20); // Default total pages let currentPage = 1; // Default current page function apiCallPagination(i) { $(".loading").show(); let skipResult = 0; currentPage = i; skipCounter = currentPage; skipCounter--; skipResult = currentPage === 1 ? 0 : skipCounter * 20; let finalFormulla = applyFilter(); let searchValue = getSearchValueFromURL(); let extendedApiURL = getExtendedApiURL( apiURL, searchValue, finalFormulla, topResult, skipResult ); $.ajax({ url: extendedApiURL, method: "GET", headers: { "Access-Control-Allow-Origin": "*", "Content-Type": "application/json", }, contentType: "application/json", dataType: "json", crossDomain: true, xhrFields: { withCredentials: false, }, }) .then((resp) => { accordionContainer(resp); $(".filterCount .count")[0].innerText = `(${ resp["@odata.count"] + " " + "updates" })`; $(".filter_title .count")[0].innerText = `(${ resp["@odata.count"] + " " + "updates" })`; $(".loading").hide(); }) .catch((err) => { $(".loading").hide(); }); $("html, body").animate({ scrollTop: $("#accordion-container").offset().top - 400, }, 10 ); } function generatePagination(totalPages, currentPage) { const paginationContainer = document.getElementById("pagination"); paginationContainer.innerHTML = ""; // Helper function to create a page item const createPageItem = (text, isActive = false, isDisabled = false) => { const li = document.createElement("li"); li.textContent = text; li.className = isActive ? "active" : isDisabled ? "disabled" : ""; if (!isActive && !isDisabled && text !== "...") { li.onclick = () => updatePagination( text === "<" ? currentPage - 1 : text === ">" ? currentPage + 1 : Number(text) ); } paginationContainer.appendChild(li); }; // Previous button createPageItem("<", false, currentPage === 1); // Always display the first page createPageItem(1, currentPage === 1); // Ellipses before the current page range if (currentPage > 4) { createPageItem("..."); } // Show pages around the current page (2 pages before and after) for ( let i = Math.max(2, currentPage - 2); i <= Math.min(totalPages - 1, currentPage + 2); i++ ) { createPageItem(i, currentPage === i); } // Ellipses after the current page range if (currentPage < totalPages - 3) { createPageItem("..."); } // Always display the last page if (totalPages > 1) { createPageItem(totalPages, currentPage === totalPages); } // Next button createPageItem(">", false, currentPage === totalPages); } function updatePagination(newPage) { if (newPage >= 1 && newPage <= totalPages) { currentPage = newPage; generatePagination(totalPages, currentPage); // Update the pagination with the new page apiCallPagination(currentPage); } } // Function to set the total number of pages dynamically function setTotalPages(newTotalPages) { totalPages = newTotalPages; currentPage = 1; // Reset to the first page when the total pages change generatePagination(totalPages, currentPage); } // Initialize the pagination with a dynamic total page count setTotalPages(Math.ceil(resp["@odata.count"] / 20)); // Example: setting the initial total pages to 20 } function accordionAPICall() { let searchValue = getSearchValueFromURL(); let finalFormulla = applyFilterAPI(); let extendedApiURL = getExtendedApiURL( apiURL, searchValue, finalFormulla, topResult, skipResult ); $(".loading").show(); $.ajax({ url: extendedApiURL, method: "GET", headers: { "Access-Control-Allow-Origin": "*", "Content-Type": "application/json", }, contentType: "application/json", dataType: "json", crossDomain: true, xhrFields: { withCredentials: false, }, }) .then((resp) => { accordionContainer(resp); paginationBlock(resp); resp["@odata.count"] > 0 ? $(".noItemFound").hide() & $(".pagination").show() : $(".noItemFound").show() & $(".pagination").hide(); $(".filterCount .count")[0].innerText = `(${ resp["@odata.count"] + " " + "updates" })`; $(".filter_title .count")[0].innerText = `(${ resp["@odata.count"] + " " + "updates" })`; for (let i = 0; i < $(".legend__text").length; i++) { if ( !resp.facets .filter((item) => item.name === "Status")[0] .values.map((key) => key.value.toLowerCase().split(" ").join("-") ) .includes($(".legend__text")[i].id) ) { const updateStatus = $(".legend__text")[i].id.split("-").join(" ") + " " + "(" + "0" + ")"; $(".legend__text")[i].innerText = updateStatus.charAt(0).toUpperCase() + updateStatus.slice(1); } } resp.facets .filter((item) => item.name === "Status")[0] .values.map((key) => $("#" + key.value.toLowerCase().split(" ").join("-")).text( key.value + " " + "(" + key.count + ")" ) ); $(".loading").hide(); return resp; }) .catch((err) => { $(".loading").hide(); $(".noItemFound").hide(); $(".pagination").hide(); }); } hideClearAll(); applyFilter.style.display = "none"; let mobileApplyFilter = document.getElementsByClassName("mobile_apply_filter"); mobileApplyFilter[0].style.display = "none"; var clearFilter = document.getElementById('clearfilter'); var mobileclearfilter = document.getElementById('mobileclearfilter'); var applyFilterBtn = applyFilter.childNodes[1]; var clearFilterBtn = clearFilter.childNodes[1]; var mobileclearFilterBtn = mobileclearfilter.childNodes[1]; var saveFilterBtn = saveFilter.childNodes[1]; var disableFilterBtns = () => { applyFilterBtn.classList.add('disabled'); clearFilterBtn.classList.add('d-none'); mobileclearFilterBtn.classList.add('d-none'); saveFilterBtn.classList.add('disabled'); }; var enableFilterBtns = () => { applyFilterBtn.classList.remove('disabled'); clearFilterBtn.classList.remove('d-none'); mobileclearFilterBtn.classList.remove('d-none'); saveFilterBtn.classList.remove('disabled'); } clearFilter.style.order = -1; clearFilter.addEventListener('click', (evt) => { evt.preventDefault(); if(!checkIdURL()){ document.getElementById('clearPillbar').click(); } window.history.pushState({}, "", window.location.href.split("?")[0]); accordionAPICall(); disableFilterBtns(); }); mobileclearfilter.style.order = -1; mobileclearfilter.addEventListener('click', (evt) => { evt.preventDefault(); if(!checkIdURL()){ document.getElementById('clearPillbar').click(); } window.history.pushState({}, "", window.location.href.split("?")[0]); accordionAPICall(); disableFilterBtns(); }); disableFilterBtns(); // Add mutation observer to active filters list. const callback = (mutationList, observer) => { for (const mutation of mutationList) { // has filters if (mutation.type === "childList" && mutation.addedNodes.length > 0 || checkIdURL()) { enableFilterBtns(); break; } // has no filters if (activeFilterList.childNodes.length == 0) { disableFilterBtns(); break; } } applyFilterBtn.click(); }; var observer = new MutationObserver(callback); observer.observe(activeFilterList, { childList: true, subtree: false }); // disable save filters after successful save. this should wait to confirm that localstorage has been successfully saved. saveFilterBtn.addEventListener('click', (evt) => { evt.currentTarget.classList.add('disabled'); }); }, 500) }); </script> </div> </div> </div> <div ocr-component-name="announcement-banner" data-component-id="01dbc0460ff412456ec49899ac06c10e" class="ocr-announcement-banner theme-night aem-GridColumn aem-GridColumn--default--12"> <section data-mount="ocr-alert-dismissible" class="announcement-banner"> <div class="container"> <div class="row"> <div class="col"> <div class="announcement-banner__center"> <div class="announcement-banner__content " role="alert"> <p class=""> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-product-pricing.min.ACSHASH66919828fb9f21a154fb5b0d8b994b32.js"></script> <link rel="stylesheet" href="/etc.clientlibs/onecloud/clientlibs/clientlib-product-pricing.min.ACSHASH2add065651afb45e8c80967dd7b86a41.css" type="text/css"> <div data-oc-token-text> If you use the M365 Public Roadmap JSON API, it will have a new URL from March 15, 2025. Thereafter, the old URL will no longer work.聽<br/> Please change any dependencies you have using <a href="https://roadmap-api.azurewebsites.net/api/features" class="ms-rte-link" target="_blank">https://roadmap-api.azurewebsites.net/api/features</a>聽<br/> to use聽<a href="https://www.microsoft.com/releasecommunications/api/v1/m365" class="ms-rte-link" target="_blank">https://www.microsoft.com/releasecommunications/api/v1/m365</a> </div> </p> </div> <div class="announcement-banner__action"> <div ocr-component-name="action" data-component-id="467e35e809075d121962a1d239c316b2" class="action d-contents"> </div> </div> </div> </div> <div class="col-auto"> <div class="announcement-banner__dismiss"> <button class="btn btn--ghost glyph-append glyph-append-cancel" aria-label="Close Announcement Banner" data-dismiss="alert"><span class="glyph-prepend" aria-hidden="true"></span></button> </div> </div> </div> </div> </section> <div aria-live="polite" aria-atomic="true" class="sr-only announcement-close-sr" data-dismiss-text="announcement banner closed"></div> </div> <div ocr-component-name="section-master" data-component-id="2b9a710ec7952a9e39aaccb62b93dcee" class="section-master aem-GridColumn aem-GridColumn--default--12"> <div class="section-master__image "> <div class="ocr-img media__asset"> <img src="https://cdn-dynmedia-1.microsoft.com/is/image/microsoftcorp/M365-Roadmap-hero?resMode=sharp2&op_usm=1.5,0.65,15,0&wid=1600&hei=635&qlt=100&fit=constrain" class=" " alt loading="lazy"/> </div> </div> <div class="container" data-oc="oc84c1" id="section-master-oc84c1"> <div class="row"> <div class="col"> <div class="layout section-master__layout section-master--layout-cols-2 "> <div class="layout__col"> <div class="section-master__layout-header"> <div ocr-component-name="block-heading" data-component-id="6ead05f340b941df5109567514e89a43" class="block-heading"> <div class=" block-heading__title" ocr-telemetry-name ocr-en-title="&lt;h1>Microsoft 365 Roadmap&lt;/h1> "> <div data-oc-token-text> <h1>Microsoft 365 Roadmap</h1> </div> </div> <div class=" block-heading__paragraph"> <div data-oc-token-text> Get the latest updates聽on our best-in-class productivity apps and intelligent cloud services. Rethink productivity, streamline business processes, and protect your business with Microsoft 365. </div> </div> <div class=" block-heading__footnote"> <div data-oc-token-text> The Microsoft 365 roadmap provides estimated release dates and descriptions for commercial features. All information is subject to change. As a feature or product becomes generally available, or is cancelled or postponed, information will be removed from this website. If Targeted release is available the Rollout start date will reflect the change beginning to appear in Targeted release followed by Standard release, otherwise the Rollout start date will reflect the change beginning to appear in Standard release. </div> </div> </div> </div> </div> <div class="layout__col"> <div class="section-master__layout-slot "> </div> </div> </div> </div> </div> <div class="row section-master__slot"> <div class="col"> </div> </div> </div> </div> <div class="roadmap-container aem-GridColumn aem-GridColumn--default--12" data-component-id="83a648d7a0b795a0825b6d7dfc9567b7" oc-component-name="roadmap-container"> <div id="roadmap-container" class="roadmap-section-master-container"> <div class="container" data-oc="oc46c4" id="section-master-oc46c4"> <div class="row"> <div class="col"> <div class="layout section-master__layout"> <div class="layout__col"> <div class="section-master__layout-header"> <div ocr-component-name="block-heading" data-component-id="6ead05f340b941df5109567514e89a43" class="block-heading"> </div> </div> </div> </div> </div> </div> <div class="row section-master__slot"> <div class="col"> <div class="roadmap" data-component-id="83a648d7a0b795a0825b6d7dfc9567b7" oc-component-name="roadmap"> <div> </div> <link rel="stylesheet" href="/etc.clientlibs/onecloud/components/content/reimagine/atomic/roadmap/roadmap/v1/roadmap/clientlib.min.ACSHASH27066a5c4f122be46a90cc8b79ef6d1b.css" type="text/css"> <div> <div class="upper-container"> <div class="searchbar"> <div> <div ocr-component-name="search-bar" data-component-id="91c4fe5eac2aedg0bbg1fha3pba330bc" class="search-bar theme-day"><form role="search"> <div ocr-component-name="input-master" data-component-id="28c4fe5eac2aedf9caf9afc2bda330ba" class="input-master"> <div class="input-master__search"> <input type="text" class="label" id="input" placeholder="Search by feature ID or keyword"/> </div> <div ocr-component-name="action" data-component-id="467e35e809075d121962a1d239c316b2" class="action d-contents"> <a class="btn btn--icon btn--icon-only " data-bi-ecn="searchicon" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="searchicon" target="_self" data-oc="oc639c" id="action-oc639c" aria-label="searchicon" data-isenvauthor="false"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex ocr-icon--size-l"> <span class="glyph-prepend glyph-prepend-search" role="presentation" aria-hidden="true"> </span> </div> </a> </div> </div> </form></div> </div> </div> <div class="icons"> <a class="btn btn--icon btn--icon-only " data-bi-ecn="book question mark" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="book question mark" data-regenerate-fwlink="true" target="_blank" data-oc="ocdfad" id="action-ocdfad" href="https://go.microsoft.com/fwlink/?linkid=2303353&clcid=0x409&culture=en-us&country=us" aria-label="book question mark" data-isenvauthor="false"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex ocr-icon--size-l ocr-icon-svg--heart"> <span class="glyph-prepend glyph-prepend-unknown" title="User guide" role="presentation" aria-hidden="true"> </span> </div> </a> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-localstorage.min.ACSHASHb884ef4864d6867bd00aa4a7a5cfb368.js"></script> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-action.min.ACSHASH9eea5f80fed74a300ccbbaa4dc41df2a.js"></script> <a class="btn btn--icon btn--icon-only " data-bi-ecn="download csv" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="download csv" target="_self" data-oc="ocf74a" id="action-ocf74a" href="https://www.microsoft.com/releasecommunications/api/v2/m365?responseFormat=csv" aria-label="download csv" data-isenvauthor="false"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex ocr-icon--size-l"> <span class="glyph-prepend glyph-prepend-download" title="Download CSV" role="presentation" aria-hidden="true"> </span> </div> </a> <a class="btn btn--icon btn--icon-only " data-bi-ecn="RSS" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="RSS" target="_blank" data-oc="oc1dcd" id="action-oc1dcd" href="https://www.microsoft.com/releasecommunications/api/v2/m365/rss" aria-label="RSS" data-isenvauthor="false"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex ocr-icon--size-l"> <span class="glyph-prepend glyph-prepend-wifi-full" title="RSS feed" role="presentation" aria-hidden="true"> </span> </div> </a> </div> </div> <div api="https://www.microsoft.com/releasecommunications/api/v2/m365" class="m365_filter_container filter-container dropdown mb-5"> <div class="filterSection hide_on_mobile"> <div class="filterCount">Filter<span class="count"></span></div> <div class="filterBtnSection"> <div class="hide_on_mobile" id="savefilter"> <a class="btn btn--secondary m365-save-filters" data-bi-ecn="Save filters" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="Save filters" target="_self" data-oc="oc2921" id="action-oc2921" href="#" aria-label="Save filters" data-isenvauthor="false"> <span class="btn__text">Save filters</span> </a> </div> <div class="hide_on_mobile clear_filter_btn" id="clearfilter"> <a class="btn btn--secondary " data-bi-ecn="Clear filters" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="Clear filters" target="_self" data-oc="occ976" id="action-occ976" aria-label="Clear filters" data-isenvauthor="false"> <span class="btn__text">Clear filters</span> </a> </div> <div class="hide_on_mobile apply_filter_btn" id="applyfilter"> <a class="btn btn--secondary " data-bi-ecn="Apply filters" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="Apply filters" target="_self" data-oc="ocdbee" id="action-ocdbee" aria-label="Apply filters" data-isenvauthor="false"> <span class="btn__text">Apply filters</span> </a> </div> </div> </div> <div class="row hide_on_desktop"> <div class="filter_title col-6">Filter<span class="count"></span></div> <div class="col-3 mt-3 mb-1"> <button type="button" class="btn btn--icon filter_btn" data-target="#mwf95774119"> <span>Filter</span> <div class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-list" role="img" aria-label=""> </span> </div> </button> </div> <div class="col-3 mt-3 mb-1"> <div class="sort-by-dropdown-mobile"> <div> <div class="dropdown dropdown-list"> <link rel="stylesheet" href="/etc.clientlibs/onecloud/components/content/reimagine/atomic/roadmap/dropdown/v1/dropdown/clientlibs/site.min.ACSHASH02477458efce199b6e0c71c181e594e0.css" type="text/css"> <script src="/etc.clientlibs/onecloud/components/content/reimagine/atomic/roadmap/dropdown/v1/dropdown/clientlibs/site.min.ACSHASH2521a78dc040acdc444fb598db530da0.js"></script> <a class="w-100 roadmap_dropdown azure_dropdown dropdown__link" data-mount="m365-dropdown" aria-expanded="false" aria-controls="m365-sortby-mobile" role="button" data-dynamic-heading="true" data-target="#m365-sortby-mobile" tabindex="0"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-subtle x-small"> <div class=" mb-0"> <div data-oc-token-text> Sort </div> </div> </div> </div> <div class="list-item__trailing"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-chevron-down" role="presentation" aria-hidden="true"> </span> </div> </div> </div> </div> </a> <ul class="dropdown-menu menu-list p-0" id="m365-sortby-mobile" aria-labelledby="m365-sortby-mobile" tabindex="-1"> <li class="menu-list__list-item "> <a class="menu-list__item-link"> <div class="indicator indicator--shape-pill"></div> <span class="menu-list__list-item-text"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center" data-en-title="PREVIEW AVAILABILITY DATE"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-strong label list-item__content-title"> <div class=" mb-0"> <div data-oc-token-text> PREVIEW AVAILABILITY DATE </div> </div> </div> </div> </div> </div> </span> </a> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-oc630d" name="cat1" value="preview-availability-newest-to-oldest" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-oc630d">Newest to oldest</label> </div> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-oc48b4" name="cat1" value="preview-availability-oldest-to-newest" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-oc48b4">Oldest to newest</label> </div> </li> <li class="menu-list__list-item "> <a class="menu-list__item-link"> <div class="indicator indicator--shape-pill"></div> <span class="menu-list__list-item-text"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center" data-en-title="ROLLOUT START DATE"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-strong label list-item__content-title"> <div class=" mb-0"> <div data-oc-token-text> ROLLOUT START DATE </div> </div> </div> </div> <div class="list-item__trailing"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <span class="glyph-prepend " role="presentation" aria-hidden="true"> </span> </div> </div> </div> </div> </span> </a> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-oce972" name="cat1" value="general-availability-newest-to-oldest" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-oce972">Newest to oldest</label> </div> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-ocf52c" name="cat1" value="general-availability-oldest-to-newest" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-ocf52c">Oldest to newest</label> </div> </li> </ul> <div class="loading">Loading...</div> </div> </div> </div> </div> </div> <div class="dropdown_container m365_dropdown_container"> <div class="row m_filter_section mb-3 hide_on_desktop"> <div class="col-3"> <span class="m_filter_title">Filter</span> </div> <div class="col-3 text-right"> <span class="badge badge--size-xs cancel_btn"> <div class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-cancel" role="img" aria-label=""></span> </div> </span> </div> </div> <a class="w-100 roadmap_dropdown azure_dropdown dropdown__link" data-mount="m365-dropdown" aria-expanded="false" aria-controls="menu-list-product-1" role="button" data-dynamic-heading="true" data-target="#menu-list-product-1" tabindex="0"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-subtle x-small"> <div class=" mb-0"> <div data-oc-token-text> Products </div> </div> </div> </div> <div class="list-item__trailing"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-chevron-down" role="presentation" aria-hidden="true"> </span> </div> </div> </div> </div> </a> <ul class="dropdown-menu menu-list p-0" id="menu-list-product-1" aria-labelledby="menu-list-product-1" tabindex="-1"> </ul> <div class="loading">Loading...</div> <a class="w-100 roadmap_dropdown azure_dropdown dropdown__link" data-mount="m365-dropdown" aria-expanded="false" aria-controls="menu-list-status" role="button" data-dynamic-heading="true" data-target="#menu-list-status" tabindex="0"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-subtle x-small"> <div class=" mb-0"> <div data-oc-token-text> Status </div> </div> </div> </div> <div class="list-item__trailing"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-chevron-down" role="presentation" aria-hidden="true"> </span> </div> </div> </div> </div> </a> <ul class="dropdown-menu menu-list p-0" id="menu-list-status" aria-labelledby="menu-list-status" tabindex="-1"> </ul> <div class="loading">Loading...</div> <a class="w-100 roadmap_dropdown azure_dropdown dropdown__link" data-mount="m365-dropdown" aria-expanded="false" aria-controls="menu-list-releaseRing" role="button" data-dynamic-heading="true" data-target="#menu-list-releaseRing" tabindex="0"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-subtle x-small"> <div class=" mb-0"> <div data-oc-token-text> Release phase </div> </div> </div> </div> <div class="list-item__trailing"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-chevron-down" role="presentation" aria-hidden="true"> </span> </div> </div> </div> </div> </a> <ul class="dropdown-menu menu-list p-0" id="menu-list-releaseRing" aria-labelledby="menu-list-releaseRing" tabindex="-1"> </ul> <div class="loading">Loading...</div> <a class="w-100 roadmap_dropdown azure_dropdown dropdown__link" data-mount="m365-dropdown" aria-expanded="false" aria-controls="menu-list-platform" role="button" data-dynamic-heading="true" data-target="#menu-list-platform" tabindex="0"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-subtle x-small"> <div class=" mb-0"> <div data-oc-token-text> Platform </div> </div> </div> </div> <div class="list-item__trailing"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-chevron-down" role="presentation" aria-hidden="true"> </span> </div> </div> </div> </div> </a> <ul class="dropdown-menu menu-list p-0" id="menu-list-platform" aria-labelledby="menu-list-platform" tabindex="-1"> </ul> <div class="loading">Loading...</div> <a class="w-100 roadmap_dropdown azure_dropdown dropdown__link" data-mount="m365-dropdown" aria-expanded="false" aria-controls="menu-list-cloudInstance" role="button" data-dynamic-heading="true" data-target="#menu-list-cloudInstance" tabindex="0"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-subtle x-small"> <div class=" mb-0"> <div data-oc-token-text> Cloud instance </div> </div> </div> </div> <div class="list-item__trailing"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-chevron-down" role="presentation" aria-hidden="true"> </span> </div> </div> </div> </div> </a> <ul class="dropdown-menu menu-list p-0" id="menu-list-cloudInstance" aria-labelledby="menu-list-cloudInstance" tabindex="-1"> </ul> <div class="loading">Loading...</div> <a class="w-100 roadmap_dropdown azure_dropdown dropdown__link" data-mount="m365-dropdown" aria-expanded="false" aria-controls="menu-list-new-updated-m365" role="button" data-dynamic-heading="true" data-target="#menu-list-new-updated-m365" tabindex="0"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-subtle x-small"> <div class=" mb-0"> <div data-oc-token-text> New or updated </div> </div> </div> </div> <div class="list-item__trailing"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-chevron-down" role="presentation" aria-hidden="true"> </span> </div> </div> </div> </div> </a> <ul class="dropdown-menu menu-list p-0" id="menu-list-new-updated-m365" aria-labelledby="menu-list-new-updated-m365" tabindex="-1"> <li class="menu-list__list-item "> <a class="menu-list__item-link"> <div class="indicator indicator--shape-pill"></div> <span class="menu-list__list-item-text"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center" data-en-title="NEW WITHIN"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-strong label list-item__content-title"> <div class=" mb-0"> <div data-oc-token-text> NEW WITHIN </div> </div> </div> </div> </div> </div> </span> </a> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-occ7ac" name="category1" value="all" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-occ7ac">All</label> </div> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-oc1628" name="category1" value="last-week" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-oc1628">Last week</label> </div> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-oc50e5" name="category1" value="last-month" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-oc50e5">Last month</label> </div> </li> <li class="menu-list__list-item "> <a class="menu-list__item-link"> <div class="indicator indicator--shape-pill"></div> <span class="menu-list__list-item-text"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center" data-en-title="CHANGED WITHIN"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-strong label list-item__content-title"> <div class=" mb-0"> <div data-oc-token-text> CHANGED WITHIN </div> </div> </div> </div> </div> </div> </span> </a> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-oc0449" name="category2" value="all" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-oc0449">All</label> </div> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-oc3b3c" name="category2" value="last-week" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-oc3b3c">Last week</label> </div> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-ocffbc" name="category2" value="last-month" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-ocffbc">Last month</label> </div> </li> <li class="menu-list__list-item "> <a class="menu-list__item-link"> <div class="indicator indicator--shape-pill"></div> <span class="menu-list__list-item-text"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> </div> </span> </a> </li> </ul> <div class="loading">Loading...</div> <div class="savefilter mobile_save_filter mt-5 hide_on_desktop" id="savefilter"> <a class="btn btn--secondary m365-save-filters" data-bi-ecn="Save filters" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="Save filters" target="_self" data-oc="oc2921" id="action-oc2921" href="#" aria-label="Save filters" data-isenvauthor="false"> <span class="btn__text">Save filters</span> </a> </div> <div class="clearfilter mobile_clear_filter hide_on_desktop clear_filter_btn" id="mobileclearfilter"> <a class="btn btn--secondary " data-bi-ecn="Clear filters" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="Clear filters" target="_self" data-oc="occ976" id="action-occ976" aria-label="Clear filters" data-isenvauthor="false"> <span class="btn__text">Clear filters</span> </a> </div> <div class="applyfilter mobile_apply_filter hide_on_desktop apply_filter_btn" id="applyfilter"> <a class="btn btn--secondary " data-bi-ecn="Apply filters" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="Apply filters" target="_self" data-oc="ocdbee" id="action-ocdbee" aria-label="Apply filters" data-isenvauthor="false"> <span class="btn__text">Apply filters</span> </a> </div> </div> <div class="filter_legend_list"> <link rel="stylesheet" href="/etc.clientlibs/onecloud/components/content/reimagine/atomic/roadmap/legend/v1/legend/clientlib.min.ACSHASH03d62bb204a46052c29baae483030bf0.css" type="text/css"> <script src="/etc.clientlibs/onecloud/components/content/reimagine/atomic/roadmap/legend/v1/legend/clientlib.min.ACSHASHd41d8cd98f00b204e9800998ecf8427e.js"></script> <div class="legend"> <div class="status-box-container"> <div class="box" filled test-id="status-id"></div> <div class="box" test-id="status-id"></div> <div class="box" test-id="status-id"></div> </div> <div class="legend__text" id="in-development"> In development </div> <button class="popover__badge" data-mount="popover" aria-expanded="false" data-placement="bottom" aria-haspopup="dialog" id="badgePopover-popover-ocb672" aria-controls="mwf-popover-ocb672" aria-label="test" tabindex="0"> <div ocr-component-name="badge" data-component-id="c37d8f9ba85341ed66b14ed6f7c1e390" class="badge badge-logo--xs badge--size-xs"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex ocr-icon-svg--info-filled"> <span class="glyph-prepend glyph-prepend-info" role="presentation" aria-hidden="true"> </span> </div> </div> </button> <div class="popover fade popover__card" role="dialog" id="mwf-popover-ocb672" aria-labelledby="badgePopover-popover-ocb672"> <p class="popover__card-body x-small">Updates that are currently in development and testing.</p> </div> </div> <div class="legend"> <div class="status-box-container"> <div class="box" filled test-id="status-id"></div> <div class="box" filled test-id="status-id"></div> <div class="box" test-id="status-id"></div> </div> <div class="legend__text" id="rolling-out"> Rolling out </div> <button class="popover__badge" data-mount="popover" aria-expanded="false" data-placement="bottom" aria-haspopup="dialog" id="badgePopover-popover-ocb629" aria-controls="mwf-popover-ocb629" aria-label="rolling out" tabindex="0"> <div ocr-component-name="badge" data-component-id="c37d8f9ba85341ed66b14ed6f7c1e390" class="badge badge-logo--xs badge--size-xs"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex ocr-icon-svg--info"> <span class="glyph-prepend glyph-prepend-info" role="presentation" aria-hidden="true"> </span> </div> </div> </button> <div class="popover fade popover__card" role="dialog" id="mwf-popover-ocb629" aria-labelledby="badgePopover-popover-ocb629"> <p class="popover__card-body x-small">Updates that are beginning to roll out and are not yet available to all applicable customers.</p> </div> </div> <div class="legend"> <div class="status-box-container"> <div class="box" filled test-id="status-id"></div> <div class="box" filled test-id="status-id"></div> <div class="box" filled test-id="status-id"></div> </div> <div class="legend__text" id="launched"> Launched </div> <button class="popover__badge" data-mount="popover" aria-expanded="false" data-placement="bottom" aria-haspopup="dialog" id="badgePopover-popover-ocf860" aria-controls="mwf-popover-ocf860" aria-label="launched" tabindex="0"> <div ocr-component-name="badge" data-component-id="c37d8f9ba85341ed66b14ed6f7c1e390" class="badge badge-logo--xs badge--size-xs"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-info" role="presentation" aria-hidden="true"> </span> </div> </div> </button> <div class="popover fade popover__card" role="dialog" id="mwf-popover-ocf860" aria-labelledby="badgePopover-popover-ocf860"> <p class="popover__card-body x-small">Fully released updates that are now generally available for applicable customers.</p> </div> </div> </div> </div> <div class="pillbar-m365"> <div class="pill-bar--filter" data-mount="filters"> <div class="pill-bar no-gutters"> <div data-mount="ocr-slider" class="col"> <div class="tab-overflow"> <div class="tab-window"> <ul id="roadmap-pillbar" class="tab-group" aria-label="pillbar1" role="listbox" tabindex="-1"> </ul> </div> </div> <div class="tab-arrows"> <button type="button" class="arrow-prev" tabindex="-1" aria-hidden="true" data-width="40"> <span class="sr-only">"prev"</span> </button> <div class="arrow-prev pill-bar__arrow-prev-bg"></div> <button type="button" class="arrow-next" tabindex="-1" aria-hidden="true" data-width="40"> <span class="sr-only">"next"</span> </button> <div class="arrow-next pill-bar__arrow-next-bg"></div> </div> </div> </div> </div> <div class="row"> <div class="col"> <div class="tab-panel-group"> </div> </div> </div> <div class="sort-by-dropdown"> <label class="dropdown-title">Sort by </label> <div> <div class="dropdown dropdown-list"> <a class="w-100 roadmap_dropdown azure_dropdown dropdown__link" data-mount="m365-dropdown" aria-expanded="false" aria-controls="m365-sortby" role="button" data-dynamic-heading="true" data-target="#m365-sortby" tabindex="0"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-subtle x-small"> <div class=" mb-0"> <div data-oc-token-text> Rollout Start: Newest to oldest </div> </div> </div> </div> <div class="list-item__trailing"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <span class="glyph-prepend glyph-prepend-chevron-down" role="presentation" aria-hidden="true"> </span> </div> </div> </div> </div> </a> <ul class="dropdown-menu menu-list p-0" id="m365-sortby" aria-labelledby="m365-sortby" tabindex="-1"> <li class="menu-list__list-item "> <a class="menu-list__item-link"> <div class="indicator indicator--shape-pill"></div> <span class="menu-list__list-item-text"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center" data-en-title="PREVIEW AVAILABILITY DATE"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-strong label list-item__content-title"> <div class=" mb-0"> <div data-oc-token-text> PREVIEW AVAILABILITY DATE </div> </div> </div> </div> </div> </div> </span> </a> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-oc630d" name="cat1" value="preview-availability-newest-to-oldest" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-oc630d">Newest to oldest</label> </div> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-oc48b4" name="cat1" value="preview-availability-oldest-to-newest" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-oc48b4">Oldest to newest</label> </div> </li> <li class="menu-list__list-item "> <a class="menu-list__item-link"> <div class="indicator indicator--shape-pill"></div> <span class="menu-list__list-item-text"> <div ocr-component-name="block-list" data-component-id="9a71882adcc03ab3e1be8cd12015f1a9" class="list-item"> <div class="list-item__inner d-flex align-items-center" data-en-title="ROLLOUT START DATE"> <div class="list-item__content flex-grow-1 d-flex flex-column"> <div class="fg--base-strong label list-item__content-title"> <div class=" mb-0"> <div data-oc-token-text> ROLLOUT START DATE </div> </div> </div> </div> <div class="list-item__trailing"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <span class="glyph-prepend " role="presentation" aria-hidden="true"> </span> </div> </div> </div> </div> </span> </a> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-oce972" name="cat1" value="general-availability-newest-to-oldest" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-oce972">Newest to oldest</label> </div> </li> <li class="menu-list__list-item" data-enabled=""> <div class="ocr-input ocr-input--type-radio d-flex align-items-start menu-list__item-checkbox "> <input type="radio" class="ocr-input__input" id="menu-list-item-ocf52c" name="cat1" value="general-availability-oldest-to-newest" tabindex="0"/> <label class="ocr-input__label" for="menu-list-item-ocf52c">Oldest to newest</label> </div> </li> </ul> <div class="loading">Loading...</div> </div> </div> </div> </div> <div> <link rel="stylesheet" href="/etc.clientlibs/onecloud/components/content/reimagine/atomic/roadmap/pagination/v1/pagination/clientlib.min.ACSHASH51964554f98d5531e84654d3df4f2992.css" type="text/css"> <div class="pageNumber"> <div class="m365_accordion accordion"> <link rel="stylesheet" href="/etc.clientlibs/onecloud/components/content/reimagine/atomic/roadmap/accordion/v1/accordion/clientlib.min.ACSHASHdcca39b85d1c0bd159f87068cb341f07.css" type="text/css"> <script src="/etc.clientlibs/onecloud/components/content/reimagine/atomic/roadmap/accordion/v1/accordion/clientlib.min.ACSHASH39dbada5f310f3a274acad37d44f326c.js"></script> <div class="ocr-faq"> <ul id="accordion-container"></ul> </div> </div> <ul class="pagination" id="pagination"></ul> <div class="noItemFound" style="text-align:center; display:none; padding: 4rem 0"><div style="font-weight:600">0 Updates found</div><div>Please update your selections</div></div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div ocr-component-name="section-master" data-component-id="2b9a710ec7952a9e39aaccb62b93dcee" class="section-master section-master--layout-header-horizontal-alignment-center aem-GridColumn aem-GridColumn--default--12"> <div class="container" data-oc="oc5e43" id="section-master-oc5e43"> <div class="row"> <div class="col"> <div class="layout section-master__layout"> <div class="layout__col"> <div class="section-master__layout-header"> <div ocr-component-name="block-heading" data-component-id="6ead05f340b941df5109567514e89a43" class="block-heading"> <div class=" block-heading__title" ocr-telemetry-name ocr-en-title="&lt;h2>Additional Resources&lt;/h2> "> <div data-oc-token-text> <h2>Additional Resources</h2> </div> </div> </div> </div> </div> </div> </div> </div> <div class="row section-master__slot"> <div class="col"> <div ocr-component-name="features-grid" data-component-id="7a3a21914df35b50158949dc5fd595b0" class="features-grid layout"> <div class="layout__col"> <div ocr-component-name="block-feature" data-component-id="9290bbb697f35c37e989109584e9d258" class="block-feature d-flex align-items-start block-feature--text-center"> <div class="block-feature__badge"> <div ocr-component-name="badge" data-component-id="c37d8f9ba85341ed66b14ed6f7c1e390" class="badge"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <div ocr-component-name="image" data-component-id="9b002e252846bf14b532f40bd58c2fca" class="ocr-img media__asset"> <img src="https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/icon-security-darkblue?resMode=sharp2&op_usm=1.5,0.65,15,0&qlt=100" class=" " alt loading="lazy" data-oc="ocb4f0" id="image-ocb4f0"/> </div> </div> </div> </div> <div class="block-feature__body d-flex flex-column align-items-start"> <div class="block-feature__headings d-flex flex-column align-items-start"> <div class=" block-feature__title"> <div data-oc-token-text> Microsoft Security </div> </div> </div> <div class=" base block-feature__paragraph"> <div data-oc-token-text> Learn about the latest Microsoft Security solutions. </div> </div> <div class="block-feature__footer"> <div ocr-component-name="block-slim" class="block-slim" data-component-id="b5cd651a36e54e9fc71a183b4ad18be8"> <div ocr-component-name="action" data-component-id="467e35e809075d121962a1d239c316b2" class="action d-contents"> <a class="link link-inline " data-bi-ecn="Learn more" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="Learn more" target="_blank" data-oc="occcac" id="action-occcac" href="https://www.microsoft.com/en-us/security/business/solutions" aria-label="Learn more about Microsoft Security solutions"> <span class="link__text">Learn more</span> </a> </div> </div> </div> </div> </div> </div> <div class="layout__col"> <div ocr-component-name="block-feature" data-component-id="9290bbb697f35c37e989109584e9d258" class="block-feature d-flex align-items-start block-feature--text-center"> <div class="block-feature__badge"> <div ocr-component-name="badge" data-component-id="c37d8f9ba85341ed66b14ed6f7c1e390" class="badge"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <div ocr-component-name="image" data-component-id="9b002e252846bf14b532f40bd58c2fca" class="ocr-img media__asset"> <img src="https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/icon-updates-darkblue?resMode=sharp2&op_usm=1.5,0.65,15,0&qlt=100" class=" " alt loading="lazy" data-oc="ocd9b4" id="image-ocd9b4"/> </div> </div> </div> </div> <div class="block-feature__body d-flex flex-column align-items-start"> <div class="block-feature__headings d-flex flex-column align-items-start"> <div class=" block-feature__title"> <div data-oc-token-text> Azure updates </div> </div> </div> <div class=" base block-feature__paragraph"> <div data-oc-token-text> Learn about important Azure product updates, roadmap, and announcements. </div> </div> <div class="block-feature__footer"> <div ocr-component-name="block-slim" class="block-slim" data-component-id="b5cd651a36e54e9fc71a183b4ad18be8"> <div ocr-component-name="action" data-component-id="467e35e809075d121962a1d239c316b2" class="action d-contents"> <a class="link link-inline " data-bi-ecn="Learn more" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="Learn more" data-regenerate-fwlink="true" target="_blank" data-oc="ocf65d" id="action-ocf65d" href="https://go.microsoft.com/fwlink/p/?LinkID=2138874&clcid=0x409&culture=en-us&country=us" aria-label="Learn more about Azure updates"> <span class="link__text">Learn more</span> </a> </div> </div> </div> </div> </div> </div> <div class="layout__col"> <div ocr-component-name="block-feature" data-component-id="9290bbb697f35c37e989109584e9d258" class="block-feature d-flex align-items-start block-feature--align-stacked block-feature--text-center"> <div class="block-feature__badge"> <div ocr-component-name="badge" data-component-id="c37d8f9ba85341ed66b14ed6f7c1e390" class="badge"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <div ocr-component-name="image" data-component-id="9b002e252846bf14b532f40bd58c2fca" class="ocr-img media__asset"> <img src="https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/icon-updates-darkblue?resMode=sharp2&op_usm=1.5,0.65,15,0&qlt=100" class=" " alt loading="lazy" data-oc="oc5200" id="image-oc5200"/> </div> </div> </div> </div> <div class="block-feature__body d-flex flex-column align-items-start"> <div class="block-feature__headings d-flex flex-column align-items-start"> <div class=" block-feature__title"> <div data-oc-token-text> Dynamics 365 and Microsoft Power Platform </div> </div> </div> <div class=" base block-feature__paragraph"> <div data-oc-token-text> See what will be available in the next wave of product updates. </div> </div> <div class="block-feature__footer"> <div ocr-component-name="block-slim" class="block-slim" data-component-id="b5cd651a36e54e9fc71a183b4ad18be8"> <div ocr-component-name="action" data-component-id="467e35e809075d121962a1d239c316b2" class="action d-contents"> <a class="link link-inline " data-bi-ecn="Learn more" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="Learn more" data-regenerate-fwlink="true" target="_blank" data-oc="oc4982" id="action-oc4982" href="https://go.microsoft.com/fwlink/p/?LinkID=2003909&clcid=0x409&culture=en-us&country=us" aria-label="Learn more about the Dynamics 365 and Microsoft Power Platform roadmap"> <span class="link__text">Learn more</span> </a> </div> </div> </div> </div> </div> </div> <div class="layout__col"> <div ocr-component-name="block-feature" data-component-id="9290bbb697f35c37e989109584e9d258" class="block-feature d-flex align-items-start block-feature--align-stacked block-feature--text-center"> <div class="block-feature__badge"> <div ocr-component-name="badge" data-component-id="c37d8f9ba85341ed66b14ed6f7c1e390" class="badge"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <div ocr-component-name="image" data-component-id="9b002e252846bf14b532f40bd58c2fca" class="ocr-img media__asset"> <img src="https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/icon-documentation-darkblue?resMode=sharp2&op_usm=1.5,0.65,15,0&qlt=100" class=" " alt loading="lazy" data-oc="oc46b4" id="image-oc46b4"/> </div> </div> </div> </div> <div class="block-feature__body d-flex flex-column align-items-start"> <div class="block-feature__headings d-flex flex-column align-items-start"> <div class=" block-feature__title"> <div data-oc-token-text> Microsoft documentation </div> </div> </div> <div class=" base block-feature__paragraph"> <div data-oc-token-text> In-depth articles on Microsoft developer tools and technologies. </div> </div> <div class="block-feature__footer"> <div ocr-component-name="block-slim" class="block-slim" data-component-id="b5cd651a36e54e9fc71a183b4ad18be8"> <div ocr-component-name="action" data-component-id="467e35e809075d121962a1d239c316b2" class="action d-contents"> <a class="link link-inline " data-bi-ecn="Learn more" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="Learn more" data-regenerate-fwlink="true" target="_blank" data-oc="ocf6d9" id="action-ocf6d9" href="https://go.microsoft.com/fwlink/p/?LinkID=2172504&clcid=0x409&culture=en-us&country=us" aria-label="Learn more about Microsoft documentation"> <span class="link__text">Learn more</span> </a> </div> </div> </div> </div> </div> </div> <div class="layout__col"> <div ocr-component-name="block-feature" data-component-id="9290bbb697f35c37e989109584e9d258" class="block-feature d-flex align-items-start block-feature--align-stacked block-feature--text-center"> <div class="block-feature__badge"> <div ocr-component-name="badge" data-component-id="c37d8f9ba85341ed66b14ed6f7c1e390" class="badge"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <div ocr-component-name="image" data-component-id="9b002e252846bf14b532f40bd58c2fca" class="ocr-img media__asset"> <img src="https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/icon-blog-darkblue?resMode=sharp2&op_usm=1.5,0.65,15,0&qlt=100" class=" " alt loading="lazy" data-oc="ocd3f5" id="image-ocd3f5"/> </div> </div> </div> </div> <div class="block-feature__body d-flex flex-column align-items-start"> <div class="block-feature__headings d-flex flex-column align-items-start"> <div class=" block-feature__title"> <div data-oc-token-text> Microsoft 365 Blog </div> </div> </div> <div class=" base block-feature__paragraph"> <div data-oc-token-text> Get the latest Microsoft 365 news. </div> </div> <div class="block-feature__footer"> <div ocr-component-name="block-slim" class="block-slim" data-component-id="b5cd651a36e54e9fc71a183b4ad18be8"> <div ocr-component-name="action" data-component-id="467e35e809075d121962a1d239c316b2" class="action d-contents"> <a class="link link-inline " data-bi-ecn="Learn more" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="Learn more" data-regenerate-fwlink="true" target="_blank" data-oc="oc7eee" id="action-oc7eee" href="https://go.microsoft.com/fwlink/p/?LinkID=2138491&clcid=0x409&culture=en-us&country=us" aria-label="Learn more about the latest Microsoft 365 news on the blog"> <span class="link__text">Learn more</span> </a> </div> </div> </div> </div> </div> </div> <div class="layout__col"> <div ocr-component-name="block-feature" data-component-id="9290bbb697f35c37e989109584e9d258" class="block-feature d-flex align-items-start block-feature--align-stacked block-feature--text-center"> <div class="block-feature__badge"> <div ocr-component-name="badge" data-component-id="c37d8f9ba85341ed66b14ed6f7c1e390" class="badge"> <div ocr-component-name="icon" data-component-id="467e35e809075d121962a1d239c316b2" class="ocr-icon d-inline-flex"> <div ocr-component-name="image" data-component-id="9b002e252846bf14b532f40bd58c2fca" class="ocr-img media__asset"> <img src="https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/icon-learn-darkblue?resMode=sharp2&op_usm=1.5,0.65,15,0&qlt=100" class=" " alt loading="lazy" data-oc="oc57c3" id="image-oc57c3"/> </div> </div> </div> </div> <div class="block-feature__body d-flex flex-column align-items-start"> <div class="block-feature__headings d-flex flex-column align-items-start"> <div class=" block-feature__title"> <div data-oc-token-text> Microsoft Learn </div> </div> </div> <div class=" base block-feature__paragraph"> <div data-oc-token-text> Select a learning path or module to continue your Microsoft 365 readiness journey. </div> </div> <div class="block-feature__footer"> <div ocr-component-name="block-slim" class="block-slim" data-component-id="b5cd651a36e54e9fc71a183b4ad18be8"> <div ocr-component-name="action" data-component-id="467e35e809075d121962a1d239c316b2" class="action d-contents"> <a class="link link-inline " data-bi-ecn="Learn more" data-bi-tags="{}" tabindex="0" data-bi-bhvr="0" data-bi-cn="Learn more" data-regenerate-fwlink="true" target="_blank" data-oc="oc775e" id="action-oc775e" href="https://go.microsoft.com/fwlink/p/?LinkID=2117061&clcid=0x409&culture=en-us&country=us" aria-label="Learn more about learning paths and modules to continue your Microsoft 365 readiness journey"> <span class="link__text">Learn more</span> </a> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div ocr-component-name="section-master" data-component-id="2b9a710ec7952a9e39aaccb62b93dcee" class="section-master section-master--breadth-none section-master--density-compact aem-GridColumn aem-GridColumn--default--12"> <div class="container" data-oc="oc4401" id="section-master-oc4401"> <div class="row section-master__slot"> <div class="col"> <div class="experiencefragment" data-component-id="581db1ec198007e2a00cbac3e44e3de9" oc-component-name="experiencefragment"><div class="cmp-experiencefragment"> <div class="xf-content-height"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="responsivegrid aem-GridColumn aem-GridColumn--default--12"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="socialfollow aem-GridColumn aem-GridColumn--default--12" data-component-id="8750c09f740a85b8d0b862206e9781be" oc-component-name="socialfollow"> <div class="col"> <div class="d-flex justify-content-between flex-wrap" data-oc="oc67cf" id="socialfollow-uid8c4b"> <div class="row"> <section class="col-12" role="region" aria-label="Microsoft Follow links"> <h2 class=" base font-weight-normal align-middle mr-g d-inline"> Follow Microsoft 365 </h2> <ul class="list-inline d-inline-block align-middle my-2"> <li data-m='{"bhvr": 126, "cN": "Linkedin", "ecn": "Linkedin", "socchn": "Linkedin", "cT": "Social Button", "pa": "body", "compnm": "Social Follow - horizontal"}' class="list-inline-item mr-g"> <a class="d-inline-block" aria-label="Follow Microsoft 365 on Linkedin" href="https://go.microsoft.com/fwlink/?linkid=2144764" target="_blank"> <img src="https://cdn-dynmedia-1.microsoft.com/is/image/microsoftcorp/LinkedIn-29?scl=1" class="" alt="linkedin logo" title="Linkedin" width="32" height="32"/> </a> </li> <li data-m='{"bhvr": 126, "cN": "Twitter", "ecn": "Twitter", "socchn": "Twitter", "cT": "Social Button", "pa": "body", "compnm": "Social Follow - horizontal"}' class="list-inline-item mr-g"> <a class="d-inline-block" aria-label="Go to the Microsoft 365 Twitter" href="https://go.microsoft.com/fwlink/p/?LinkId=2000804" target="_blank"> <img src="https://cdn-dynmedia-1.microsoft.com/is/image/microsoftcorp/Twitter-34?scl=1" class="" alt="Twitter logo" title="Twitter" width="32" height="32"/> </a> </li> <li data-m='{"bhvr": 126, "cN": "Blog", "ecn": "Blog", "socchn": "Blog", "cT": "Social Button", "pa": "body", "compnm": "Social Follow - horizontal"}' class="list-inline-item mr-g"> <a class="d-inline-block" aria-label="Go to the Microsoft 365 blog" href="https://go.microsoft.com/fwlink/p/?LinkID=2000803" target="_blank"> <img src="https://cdn-dynmedia-1.microsoft.com/is/image/microsoftcorp/Blog-1?scl=1" class="" alt="Microsoft 365 blog logo" title="Blog" width="32" height="32"/> </a> </li> </ul> </section> </div> <div class="row"> </div> </div> </div> </div> </div> </div> </div> </div></div> <span style="display:none"> </span></div> </div> </div> </div> </div> </div> </div> </div> </main></div> <div class="universalfooter aem-GridColumn aem-GridColumn--default--12" data-component-id="873fa1f863becf63b38092282d4ea0b1"> <div id="footerArea" class="uhf" data-m='{"cN":"footerArea","cT":"Area_coreuiArea","id":"a2Body","sN":2,"aN":"Body"}'> <div id="footerRegion" data-region-key="footerregion" data-m='{"cN":"footerRegion","cT":"Region_coreui-region","id":"r1a2","sN":1,"aN":"a2"}' > <div id="footerUniversalFooter" data-m='{"cN":"footerUniversalFooter","cT":"Module_coreui-universalfooter","id":"m1r1a2","sN":1,"aN":"r1a2"}' data-module-id="Category|footerRegion|coreui-region|footerUniversalFooter|coreui-universalfooter"> <footer id="uhf-footer" class="c-uhff context-uhf" data-uhf-mscc-rq="false" data-footer-footprint="/OfficeProducts/SPEFooter, fromService: True" data-m='{"cN":"Uhf footer_cont","cT":"Container","id":"c1m1r1a2","sN":1,"aN":"m1r1a2"}'> <nav class="c-uhff-nav" aria-label="Footer Resource links" data-m='{"cN":"Footer nav_cont","cT":"Container","id":"c1c1m1r1a2","sN":1,"aN":"c1m1r1a2"}'> <div class="c-uhff-nav-row"> <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn1_cont","cT":"Container","id":"c1c1c1m1r1a2","sN":1,"aN":"c1c1m1r1a2"}'> <div class="c-heading-4" role="heading" aria-level="2">What&#39;s new</div> <ul class="c-list f-bare"> <li> <a aria-label="Surface Pro What&#39;s new" class="c-uhff-link" href="https://www.microsoft.com/en-us/surface/devices/surface-pro-11th-edition" data-m='{"cN":"Footer_WhatsNew_NewSurfacePro_nav","id":"n1c1c1c1m1r1a2","sN":1,"aN":"c1c1c1m1r1a2"}'>Surface Pro</a> </li> <li> <a aria-label="Surface Laptop What&#39;s new" class="c-uhff-link" href="https://www.microsoft.com/en-us/surface/devices/surface-laptop-7th-edition" data-m='{"cN":"Footer_WhatsNew_SurfaceLaptop_nav","id":"n2c1c1c1m1r1a2","sN":2,"aN":"c1c1c1m1r1a2"}'>Surface Laptop</a> </li> <li> <a aria-label="Surface Laptop Studio 2 What&#39;s new" class="c-uhff-link" href="https://www.microsoft.com/en-us/d/Surface-Laptop-Studio-2/8rqr54krf1dz" data-m='{"cN":"Footer_WhatsNew_SurfaceLaptopStudio2_nav","id":"n3c1c1c1m1r1a2","sN":3,"aN":"c1c1c1m1r1a2"}'>Surface Laptop Studio 2</a> </li> <li> <a aria-label="Surface Laptop Go 3 What&#39;s new" class="c-uhff-link" href="https://www.microsoft.com/en-us/d/Surface-Laptop-Go-3/8p0wwgj6c6l2" data-m='{"cN":"Footer_WhatsNew_SurfaceLaptopGo3_nav","id":"n4c1c1c1m1r1a2","sN":4,"aN":"c1c1c1m1r1a2"}'>Surface Laptop Go 3</a> </li> <li> <a aria-label="Microsoft Copilot What&#39;s new" class="c-uhff-link" href="https://www.microsoft.com/en-us/microsoft-copilot" data-m='{"cN":"Footer_WhatsNew_CopilotMicrosoft_nav","id":"n5c1c1c1m1r1a2","sN":5,"aN":"c1c1c1m1r1a2"}'>Microsoft Copilot</a> </li> <li> <a aria-label="AI in Windows What&#39;s new" class="c-uhff-link" href="https://www.microsoft.com/en-us/windows/copilot-ai-features" data-m='{"cN":"Whatsnew_AIinWindows_nav","id":"n6c1c1c1m1r1a2","sN":6,"aN":"c1c1c1m1r1a2"}'>AI in Windows</a> </li> <li> <a aria-label="Explore Microsoft products What&#39;s new" class="c-uhff-link" href="https://www.microsoft.com/en-us/microsoft-products-and-apps" data-m='{"cN":"Footer_WhatsNew_ExploreMicrosoftProducts_nav","id":"n7c1c1c1m1r1a2","sN":7,"aN":"c1c1c1m1r1a2"}'>Explore Microsoft products</a> </li> <li> <a aria-label="Windows 11 apps What&#39;s new" class="c-uhff-link" href="https://www.microsoft.com/windows/windows-11-apps" data-m='{"cN":"Footer_WhatsNew_Windows_11_apps_nav","id":"n8c1c1c1m1r1a2","sN":8,"aN":"c1c1c1m1r1a2"}'>Windows 11 apps</a> </li> </ul> </div> <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn2_cont","cT":"Container","id":"c2c1c1m1r1a2","sN":2,"aN":"c1c1m1r1a2"}'> <div class="c-heading-4" role="heading" aria-level="2">Microsoft Store</div> <ul class="c-list f-bare"> <li> <a aria-label="Account profile Microsoft Store" class="c-uhff-link" href="https://account.microsoft.com/" data-m='{"cN":"Footer_StoreandSupport_AccountProfile_nav","id":"n1c2c1c1m1r1a2","sN":1,"aN":"c2c1c1m1r1a2"}'>Account profile</a> </li> <li> <a aria-label="Download Center Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/en-us/download" data-m='{"cN":"Footer_StoreandSupport_DownloadCenter_nav","id":"n2c2c1c1m1r1a2","sN":2,"aN":"c2c1c1m1r1a2"}'>Download Center</a> </li> <li> <a aria-label="Microsoft Store support Microsoft Store" class="c-uhff-link" href="https://go.microsoft.com/fwlink/?linkid=2139749" data-m='{"cN":"Footer_StoreandSupport_SalesAndSupport_nav","id":"n3c2c1c1m1r1a2","sN":3,"aN":"c2c1c1m1r1a2"}'>Microsoft Store support</a> </li> <li> <a aria-label="Returns Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/returns" data-m='{"cN":"Footer_StoreandSupport_Returns_nav","id":"n4c2c1c1m1r1a2","sN":4,"aN":"c2c1c1m1r1a2"}'>Returns</a> </li> <li> <a aria-label="Order tracking Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/order-tracking" data-m='{"cN":"Footer_StoreandSupport_OrderTracking_nav","id":"n5c2c1c1m1r1a2","sN":5,"aN":"c2c1c1m1r1a2"}'>Order tracking</a> </li> <li> <a aria-label="Certified Refurbished Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/certified-refurbished-products" data-m='{"cN":"Footer_StoreandSupport_StoreLocations_nav","id":"n6c2c1c1m1r1a2","sN":6,"aN":"c2c1c1m1r1a2"}'>Certified Refurbished</a> </li> <li> <a aria-label="Microsoft Store Promise Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/why-microsoft-store?icid=footer_why-msft-store_7102020" data-m='{"cN":"Footer_StoreandSupport_MicrosoftPromise_nav","id":"n7c2c1c1m1r1a2","sN":7,"aN":"c2c1c1m1r1a2"}'>Microsoft Store Promise</a> </li> <li> <a aria-label="Flexible Payments Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/payment-financing-options?icid=footer_financing_vcc" data-m='{"cN":"Footer_StoreandSupport_Financing_nav","id":"n8c2c1c1m1r1a2","sN":8,"aN":"c2c1c1m1r1a2"}'>Flexible Payments</a> </li> </ul> </div> <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn3_cont","cT":"Container","id":"c3c1c1m1r1a2","sN":3,"aN":"c1c1m1r1a2"}'> <div class="c-heading-4" role="heading" aria-level="2">Education</div> <ul class="c-list f-bare"> <li> <a aria-label="Microsoft in education Education" class="c-uhff-link" href="https://www.microsoft.com/en-us/education" data-m='{"cN":"Footer_Education_MicrosoftInEducation_nav","id":"n1c3c1c1m1r1a2","sN":1,"aN":"c3c1c1m1r1a2"}'>Microsoft in education</a> </li> <li> <a aria-label="Devices for education Education" class="c-uhff-link" href="https://www.microsoft.com/en-us/education/devices/overview" data-m='{"cN":"Footer_Education_DevicesforEducation_nav","id":"n2c3c1c1m1r1a2","sN":2,"aN":"c3c1c1m1r1a2"}'>Devices for education</a> </li> <li> <a aria-label="Microsoft Teams for Education Education" class="c-uhff-link" href="https://www.microsoft.com/en-us/education/products/teams" data-m='{"cN":"Footer_Education_MicrosoftTeamsforEducation_nav","id":"n3c3c1c1m1r1a2","sN":3,"aN":"c3c1c1m1r1a2"}'>Microsoft Teams for Education</a> </li> <li> <a aria-label="Microsoft 365 Education Education" class="c-uhff-link" href="https://www.microsoft.com/en-us/education/products/microsoft-365" data-m='{"cN":"Footer_Education_Microsoft365Education_nav","id":"n4c3c1c1m1r1a2","sN":4,"aN":"c3c1c1m1r1a2"}'>Microsoft 365 Education</a> </li> <li> <a aria-label="How to buy for your school Education" class="c-uhff-link" href="https://www.microsoft.com/education/how-to-buy" data-m='{"cN":"Footer_Howtobuyforyourschool_nav","id":"n5c3c1c1m1r1a2","sN":5,"aN":"c3c1c1m1r1a2"}'>How to buy for your school</a> </li> <li> <a aria-label="Educator training and development Education" class="c-uhff-link" href="https://education.microsoft.com/" data-m='{"cN":"Footer_Education_EducatorTrainingDevelopment_nav","id":"n6c3c1c1m1r1a2","sN":6,"aN":"c3c1c1m1r1a2"}'>Educator training and development</a> </li> <li> <a aria-label="Deals for students and parents Education" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/education" data-m='{"cN":"Footer_Education_DealsForStudentsandParents_nav","id":"n7c3c1c1m1r1a2","sN":7,"aN":"c3c1c1m1r1a2"}'>Deals for students and parents</a> </li> <li> <a aria-label="Azure for students Education" class="c-uhff-link" href="https://azure.microsoft.com/en-us/free/students/" data-m='{"cN":"Footer_Education_Azureforstudents_nav","id":"n8c3c1c1m1r1a2","sN":8,"aN":"c3c1c1m1r1a2"}'>Azure for students</a> </li> </ul> </div> </div> <div class="c-uhff-nav-row"> <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn4_cont","cT":"Container","id":"c4c1c1m1r1a2","sN":4,"aN":"c1c1m1r1a2"}'> <div class="c-heading-4" role="heading" aria-level="2">Business</div> <ul class="c-list f-bare"> <li> <a aria-label="Microsoft Cloud Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/microsoft-cloud" data-m='{"cN":"Footer_Business_Microsoft_Cloud_nav","id":"n1c4c1c1m1r1a2","sN":1,"aN":"c4c1c1m1r1a2"}'>Microsoft Cloud</a> </li> <li> <a aria-label="Microsoft Security Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/security" data-m='{"cN":"Footer_Business_Microsoft Security_nav","id":"n2c4c1c1m1r1a2","sN":2,"aN":"c4c1c1m1r1a2"}'>Microsoft Security</a> </li> <li> <a aria-label="Dynamics 365 Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/dynamics-365" data-m='{"cN":"Footer_Business_MicrosoftDynamics365_nav","id":"n3c4c1c1m1r1a2","sN":3,"aN":"c4c1c1m1r1a2"}'>Dynamics 365</a> </li> <li> <a aria-label="Microsoft 365 Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/microsoft-365/business" data-m='{"cN":"Footer_Business_M365_nav","id":"n4c4c1c1m1r1a2","sN":4,"aN":"c4c1c1m1r1a2"}'>Microsoft 365</a> </li> <li> <a aria-label="Microsoft Power Platform Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/power-platform" data-m='{"cN":"Footer_DeveloperAndIT_Power Platform_nav","id":"n5c4c1c1m1r1a2","sN":5,"aN":"c4c1c1m1r1a2"}'>Microsoft Power Platform</a> </li> <li> <a aria-label="Microsoft Teams Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/microsoft-teams/group-chat-software" data-m='{"cN":"Footer_Business_Microsoft365_nav","id":"n6c4c1c1m1r1a2","sN":6,"aN":"c4c1c1m1r1a2"}'>Microsoft Teams</a> </li> <li> <a aria-label="Microsoft 365 Copilot Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/microsoft-365/copilot/copilot-for-work" data-m='{"cN":"Footer_CopilotMicrosoft365_nav","id":"n7c4c1c1m1r1a2","sN":7,"aN":"c4c1c1m1r1a2"}'>Microsoft 365 Copilot</a> </li> <li> <a aria-label="Small Business Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/business?icid=CNavBusinessStore" data-m='{"cN":"Footer_Business-SmallBusiness_nav","id":"n8c4c1c1m1r1a2","sN":8,"aN":"c4c1c1m1r1a2"}'>Small Business</a> </li> </ul> </div> <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn5_cont","cT":"Container","id":"c5c1c1m1r1a2","sN":5,"aN":"c1c1m1r1a2"}'> <div class="c-heading-4" role="heading" aria-level="2">Developer &amp; IT</div> <ul class="c-list f-bare"> <li> <a aria-label="Azure Developer &amp; IT" class="c-uhff-link" href="https://azure.microsoft.com/en-us/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftAzure_nav","id":"n1c5c1c1m1r1a2","sN":1,"aN":"c5c1c1m1r1a2"}'>Azure</a> </li> <li> <a aria-label="Microsoft Developer Developer &amp; IT" class="c-uhff-link" href="https://developer.microsoft.com/en-us/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftDeveloper_nav","id":"n2c5c1c1m1r1a2","sN":2,"aN":"c5c1c1m1r1a2"}'>Microsoft Developer</a> </li> <li> <a aria-label="Documentation Developer &amp; IT" class="c-uhff-link" href="https://learn.microsoft.com/docs/" data-m='{"cN":"Footer_DeveloperAndIT_Documentation_nav","id":"n3c5c1c1m1r1a2","sN":3,"aN":"c5c1c1m1r1a2"}'>Documentation</a> </li> <li> <a aria-label="Microsoft Learn Developer &amp; IT" class="c-uhff-link" href="https://learn.microsoft.com/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftLearn_nav","id":"n4c5c1c1m1r1a2","sN":4,"aN":"c5c1c1m1r1a2"}'>Microsoft Learn</a> </li> <li> <a aria-label="Microsoft Tech Community Developer &amp; IT" class="c-uhff-link" href="https://techcommunity.microsoft.com/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftTechCommunity_nav","id":"n5c5c1c1m1r1a2","sN":5,"aN":"c5c1c1m1r1a2"}'>Microsoft Tech Community</a> </li> <li> <a aria-label="Azure Marketplace Developer &amp; IT" class="c-uhff-link" href="https://azuremarketplace.microsoft.com/en-us/" data-m='{"cN":"Footer_DeveloperAndIT_AzureMarketplace_nav","id":"n6c5c1c1m1r1a2","sN":6,"aN":"c5c1c1m1r1a2"}'>Azure Marketplace</a> </li> <li> <a aria-label="AppSource Developer &amp; IT" class="c-uhff-link" href="https://appsource.microsoft.com/en-us/" data-m='{"cN":"Footer_DeveloperAndIT_AppSource_nav","id":"n7c5c1c1m1r1a2","sN":7,"aN":"c5c1c1m1r1a2"}'>AppSource</a> </li> <li> <a aria-label="Visual Studio Developer &amp; IT" class="c-uhff-link" href="https://visualstudio.microsoft.com/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftVisualStudio_nav","id":"n8c5c1c1m1r1a2","sN":8,"aN":"c5c1c1m1r1a2"}'>Visual Studio</a> </li> </ul> </div> <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn6_cont","cT":"Container","id":"c6c1c1m1r1a2","sN":6,"aN":"c1c1m1r1a2"}'> <div class="c-heading-4" role="heading" aria-level="2">Company</div> <ul class="c-list f-bare"> <li> <a aria-label="Careers Company" class="c-uhff-link" href="https://careers.microsoft.com/" data-m='{"cN":"Footer_Company_Careers_nav","id":"n1c6c1c1m1r1a2","sN":1,"aN":"c6c1c1m1r1a2"}'>Careers</a> </li> <li> <a aria-label="About Microsoft Company" class="c-uhff-link" href="https://www.microsoft.com/about" data-m='{"cN":"Footer_Company_AboutMicrosoft_nav","id":"n2c6c1c1m1r1a2","sN":2,"aN":"c6c1c1m1r1a2"}'>About Microsoft</a> </li> <li> <a aria-label="Company news Company" class="c-uhff-link" href="https://news.microsoft.com/" data-m='{"cN":"Footer_Company_CompanyNews_nav","id":"n3c6c1c1m1r1a2","sN":3,"aN":"c6c1c1m1r1a2"}'>Company news</a> </li> <li> <a aria-label="Privacy at Microsoft Company" class="c-uhff-link" href="https://privacy.microsoft.com/en-us" data-m='{"cN":"Footer_Company_PrivacyAtMicrosoft_nav","id":"n4c6c1c1m1r1a2","sN":4,"aN":"c6c1c1m1r1a2"}'>Privacy at Microsoft</a> </li> <li> <a aria-label="Investors Company" class="c-uhff-link" href="https://www.microsoft.com/investor/default.aspx" data-m='{"cN":"Footer_Company_Investors_nav","id":"n5c6c1c1m1r1a2","sN":5,"aN":"c6c1c1m1r1a2"}'>Investors</a> </li> <li> <a aria-label="Diversity and inclusion Company" class="c-uhff-link" href="https://www.microsoft.com/en-us/diversity/" data-m='{"cN":"Footer_Company_DiversityAndInclusion_nav","id":"n6c6c1c1m1r1a2","sN":6,"aN":"c6c1c1m1r1a2"}'>Diversity and inclusion</a> </li> <li> <a aria-label="Accessibility Company" class="c-uhff-link" href="https://www.microsoft.com/en-us/accessibility" data-m='{"cN":"Footer_Company_Accessibility_nav","id":"n7c6c1c1m1r1a2","sN":7,"aN":"c6c1c1m1r1a2"}'>Accessibility</a> </li> <li> <a aria-label="Sustainability Company" class="c-uhff-link" href="https://www.microsoft.com/en-us/sustainability/" data-m='{"cN":"Footer_Company_Sustainability_nav","id":"n8c6c1c1m1r1a2","sN":8,"aN":"c6c1c1m1r1a2"}'>Sustainability</a> </li> </ul> </div> </div> </nav> <div class="c-uhff-base"> <a id="locale-picker-link" aria-label="Content Language Selector. Currently set to English (United States)" class="c-uhff-link c-uhff-lang-selector c-glyph glyph-world" href="https://www.microsoft.com/en-US/microsoft-365/locale" data-m='{"cN":"locale_picker(US)_nav","id":"n7c1c1m1r1a2","sN":7,"aN":"c1c1m1r1a2"}'>English (United States)</a> <a data-m='{"id":"n8c1c1m1r1a2","sN":8,"aN":"c1c1m1r1a2"}' href="https://aka.ms/yourcaliforniaprivacychoices" class='c-uhff-link c-uhff-ccpa'> <svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve" height="16" width="43"> <title>Your Privacy Choices Opt-Out Icon</title> <path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"/> <path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"/> <path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"/> <path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"/> </svg> <span>Your Privacy Choices</span> </a> <noscript> <a data-m='{"id":"n9c1c1m1r1a2","sN":9,"aN":"c1c1m1r1a2"}' href="https://aka.ms/yourcaliforniaprivacychoices" class='c-uhff-link c-uhff-ccpa'> <svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve" height="16" width="43"> <title>Your Privacy Choices Opt-Out Icon</title> <path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"/> <path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"/> <path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"/> <path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"/> </svg> <span>Your Privacy Choices</span> </a> </noscript> <a data-m='{"id":"n10c1c1m1r1a2","sN":10,"aN":"c1c1m1r1a2"}' href="https://go.microsoft.com/fwlink/?linkid=2259814" class="c-uhff-link c-uhff-consumer"> <span>Consumer Health Privacy</span> </a> <nav aria-label="Microsoft corporate links"> <ul class="c-list f-bare" data-m='{"cN":"Corp links_cont","cT":"Container","id":"c11c1c1m1r1a2","sN":11,"aN":"c1c1m1r1a2"}'> <li id="c-uhff-footer_sitemap"> <a class="c-uhff-link" href="https://www.microsoft.com/en-us/sitemap1.aspx" data-mscc-ic="false" data-m='{"cN":"Footer_Sitemap_nav","id":"n1c11c1c1m1r1a2","sN":1,"aN":"c11c1c1m1r1a2"}'>Sitemap</a> </li> <li id="c-uhff-footer_contactus"> <a class="c-uhff-link" href="https://support.microsoft.com/contactus" data-mscc-ic="false" data-m='{"cN":"Footer_ContactUs_nav","id":"n2c11c1c1m1r1a2","sN":2,"aN":"c11c1c1m1r1a2"}'>Contact Microsoft</a> </li> <li id="c-uhff-footer_privacyandcookies"> <a class="c-uhff-link" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-mscc-ic="false" data-m='{"cN":"Footer_PrivacyandCookies_nav","id":"n3c11c1c1m1r1a2","sN":3,"aN":"c11c1c1m1r1a2"}'>Privacy </a> </li> <li class=" x-hidden" id="c-uhff-footer_managecookies"> <a class="c-uhff-link" href="#" data-mscc-ic="false" data-m='{"cN":"Footer_ManageCookies_nav","id":"n4c11c1c1m1r1a2","sN":4,"aN":"c11c1c1m1r1a2"}'>Manage cookies</a> </li> <li id="c-uhff-footer_termsofuse"> <a class="c-uhff-link" href="https://go.microsoft.com/fwlink/?LinkID=206977" data-mscc-ic="false" data-m='{"cN":"Footer_TermsOfUse_nav","id":"n5c11c1c1m1r1a2","sN":5,"aN":"c11c1c1m1r1a2"}'>Terms of use</a> </li> <li id="c-uhff-footer_trademarks"> <a class="c-uhff-link" href="https://go.microsoft.com/fwlink/?linkid=2196228" data-mscc-ic="false" data-m='{"cN":"Footer_Trademarks_nav","id":"n6c11c1c1m1r1a2","sN":6,"aN":"c11c1c1m1r1a2"}'>Trademarks</a> </li> <li id="c-uhff-footer_safetyandeco"> <a class="c-uhff-link" href="https://go.microsoft.com/fwlink/?linkid=2196227" data-mscc-ic="false" data-m='{"cN":"Footer_SafetyAndEco_nav","id":"n7c11c1c1m1r1a2","sN":7,"aN":"c11c1c1m1r1a2"}'>Safety &amp; eco</a> </li> <li id="c-uhff-recycling"> <a class="c-uhff-link" href="https://www.microsoft.com/en-us/legal/compliance/recycling" data-mscc-ic="false" data-m='{"cN":"Recycling_nav","id":"n8c11c1c1m1r1a2","sN":8,"aN":"c11c1c1m1r1a2"}'>Recycling</a> </li> <li id="c-uhff-footer_aboutourads"> <a class="c-uhff-link" href="https://choice.microsoft.com" data-mscc-ic="false" data-m='{"cN":"Footer_AboutourAds_nav","id":"n9c11c1c1m1r1a2","sN":9,"aN":"c11c1c1m1r1a2"}'>About our ads</a> </li> <li>&#169; Microsoft 2025</li> </ul> </nav> </div> </footer> <script id="uhf-footer-ccpa"> const globalPrivacyControlEnabled = navigator.globalPrivacyControl; const GPC_DataSharingOptIn = (globalPrivacyControlEnabled) ? false : checkThirdPartyAdsOptOutCookie(); if(window.onGPCLoaded) { window.onGPCLoaded(); } function checkThirdPartyAdsOptOutCookie() { try { const ThirdPartyAdsOptOutCookieName = '3PAdsOptOut'; var cookieValue = getCookie(ThirdPartyAdsOptOutCookieName); return cookieValue != 1; } catch { return true; } } function getCookie(cookieName) { var cookieValue = document.cookie.match('(^|;)\\s*' + cookieName + '\\s*=\\s*([^;]+)'); return (cookieValue) ? cookieValue[2] : ''; } </script> </div> </div> </div> <script src="https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js"></script><script src="https://www.microsoft.com/onerfstatics/marketingsites-eas-prod/shell/_scrf/js/themes=default/54-af9f9f/d4-fb1f57/e1-a50eee/e7-954872/d8-97d509/f0-251fe2/46-be1318/77-04a268/11-240c7b/63-077520/a4-34de62/e2-608e3c/db-bc0148/dc-7e9864/6d-c07ea1/6f-dafe8c/f6-aa5278/f1-99b817/6d-1e7ed0/b7-cadaa7/c4-898cf2/ca-40b7b0/4e-ee3a55/3e-f5c39b/c3-6454d7/f9-7592d3/d0-e64f3e/92-10345d/79-499886/7e-cda2d3/58-ab4971/57-c14418/e0-3c9860/de-884374/1f-100dea/33-abe4df/2b-8e0ae6?ver=2.0&_cf=02242021_3231&iife=1"></script><script src="https://mem.gfx.ms/meversion?partner=OfficeProducts&market=en-us&uhf=1" defer></script> </div> </div> </div> <link rel="stylesheet" href="/etc.clientlibs/onecloud/clientlibs/reimagine/clientlib-reimagine-base.min.ACSHASH81b1ef0c4a6b80454291234fcd6e45b0.css" type="text/css"> <link rel="stylesheet" href="/etc.clientlibs/cascade.component.authoring/clientlibs/clientlib-reimagine-base.min.ACSHASH81b1ef0c4a6b80454291234fcd6e45b0.css" type="text/css"> <script src="/etc.clientlibs/onecloud/clientlibs/reimagine/clientlib-reimagine-base.min.ACSHASH08c5f9cb4220e78ff920dae3a7a8ed53.js"></script> <script src="/etc.clientlibs/cascade.component.authoring/clientlibs/clientlib-reimagine-base.min.ACSHASH2b143bed0ff34bc70bc0703346f70e08.js"></script> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-click-group-telemetry.min.ACSHASHf25fec6821f63d701a6b6291a4011894.js"></script> <script src="/etc.clientlibs/microsoft/clientlibs/clientlib-httpclient.min.ACSHASH5ee9e4e4e0a5fd39092e63d2d102b12b.js"></script> <script src="/etc.clientlibs/cascade.component.authoring/clientlibs/clientlib-cookieconsent.min.ACSHASH96f0c5b1219e39b8788028f5c17a5ad9.js"></script> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-cookievalidator.min.ACSHASH3db5cf9fd3fab92b3889302c8de78d1b.js"></script> <script src="/etc.clientlibs/microsoft/components/structure/page/clientlibs/featurecontrol.min.ACSHASHc22ea5b46f3fcad90da0abcc0a3f73d4.js"></script> <script src="/etc.clientlibs/cascade.component.authoring/components/structure/cascade-page/clientlibs/featurecontrol.min.ACSHASHc22ea5b46f3fcad90da0abcc0a3f73d4.js"></script> <div id='customFeatureControl' enabledFeatures="contentbackfillgenerate,esiproductcards,feature-controlled-mwf,uhf-ms-io-endpoint,uhf-esi-cv,uhf-esi-cache,contentsquare,mediapixel,holiday-themer,lazyload-static-components,clientlibDefer,upsellEnabled,contentbackfillpkgdelete,healthcheck,contentbackfillhttpgenerate,perf-tracker-1ds,dynamic-bundle,cvIncrementer,tentingEnabled,chatCookiesImplemented,alertCountDownWithoutServerTime,pdpDynamicRendering,bundlesDynamicRendering,contentbackfillmetadatachangesvideo,contentbackfillmetadatachangesnonvideo,listDynamicRendering,experimentation-without-personalization,generic-list-importer,combinedUHF,cvCallEnabled,m365ProductCatalog,support-unsupported-locales,deferClickTale,videoLazyLoad,prefetchFontsEnabled,enable-code-isolation,imageLinkTag,fetchPriority,contentIngestionAgent,enableClickgroupTelemetry,imageLazyLoad,contentIngestionAgent-dispatcher2westus2Agent,isCacheControlFeatureEnabled,feature-controlled-content-card,lcpPrioritizationPhase1,ocReimagineTelemetry,deferScriptsEnabled,lcpPrioritizationPhase2,ocReimagineSlotNumberTelemetry,contentIngestionAgent-dispatcher1westus2Agent,ocReimagineComponentNameTelemetry,ocReimagineTemplateNameTelemetry,ptePhase1,extended-html-minification-sites,dynamicPrice,gl-auto-config,displayV35Toggle,chatCustomEndpoint,enableBoostPersonalization,ocReimagineTelemetryTemplateNameSwap,enableEmailConnector,enable-eventingService,ocReimagineAIAssistant,acsPMEFeatureEnabled,ocReimagineCustomerApiUrl,ocReimagineCustomerFilterApiUrl,email-FigmaEmailAutomation,storeVideoUmp,ocProductPricePrimaryLocale,entertainmentEW"></div> <div class='oneds-config' data-instrumentationkey='1cfc1aff02e4437889594f14c4cad289-5bf9ec06-73a3-4827-a5e7-d709ff3d3b12-6941' data-isenabled='true' data-env='prod' data-market='en-us' data-pageName='Microsoft 365 Roadmap | Microsoft 365' data-urlCollectQuery='true' data-urlCollectHash='false' data-autoCapturelineage='false' data-autoCaptureresize='false' data-autoCapturescroll='false' data-initialize1DSEventName="none" data-tenantName='bade' data-tenantTitle='Brand, Advocacy, Digital and Experiences' data-tenantDomain='microsoft' data-tenantSiteName='microsoft' data-tenantNameProperty='tenantName' data-tenantTitleProperty='tenantTitle' data-tenantDomainProperty='tenantDomain' data-tenantSiteNameProperty='tenantSiteName' data-max1DSInitializeDelayInSeconds='1'> </div> <script src="/etc.clientlibs/microsoft/components/structure/page/clientlibs/custom-oneds.min.ACSHASHc3aec3d03bc5447975e3ee25b53f6c32.js"></script> <script src="/etc.clientlibs/cascade.component.authoring/components/structure/cascade-page/clientlibs/custom-oneds.min.ACSHASHd41d8cd98f00b204e9800998ecf8427e.js"></script> <script id="onecloud-body-script" type="text/javascript" src="/msonecloudapi/assets/msocbody.js" async></script> <link rel="stylesheet" href="/etc.clientlibs/onecloud/clientlibs/clientlib-chat.min.ACSHASHfa6f56b2d3037982772378233706c9af.css" type="text/css"> <meta name="chat-default-config" value='{&#34;checkForAgentAvailability&#34;:&#34;false&#34;,&#34;srcFmt&#34;:&#34;https://publisher.liveperson.net/iframe-le-tag/iframe-cs.html?lpsite={0}&amp;lpsection={1}&amp;buttons=hiddenchat&#34;,&#34;siteId&#34;:&#34;60270350&#34;,&#34;innerContainerId&#34;:&#34;lp-iframe-container&#34;,&#34;topic&#34;:&#34;Office365&#34;,&#34;suppressProactive&#34;:&#34;false&#34;,&#34;domainUrl&#34;:&#34;https://publisher.liveperson.net&#34;}'/> <meta name="chat-default-locale-chat" value="{&#34;market&#34;:&#34;en-us&#34;,&#34;checkForAgentAvailability&#34;:&#34;false&#34;,&#34;suppressProactive&#34;:&#34;false&#34;}"/> <meta name="chat-default-site-type-chat"/> <meta name="chat-specific-site-type-locale-chat"/> <meta name="chat-oc-opts" value='{"chatDialogDescription": "chat with Sales window", "isChatDisabled": "", "siteType": "", "disableProactiveChat": "false", "debugHostNames": ["localhost", "sites-author.adobeppe.microsoft.com"]}'/> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-chat.min.ACSHASHb2193ee3d1a572c4de0275bb103c5293.js"></script> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-market-layer.min.ACSHASH551a5d1b5ebf715e3f78c311a57fa1d7.js"></script> <link rel="stylesheet" href="/etc.clientlibs/onecloud/clientlibs/clientlib-contact-sales.min.ACSHASH4a1a21c1176e98acf994a206329519ba.css" type="text/css"> <script src="/etc.clientlibs/onecloud/clientlibs/clientlib-contact-sales.min.ACSHASH4c899bc9d9bdc8ca4b7ad57788766bc6.js"></script> <section id="oc-contact-sales"> </section> <div style="display: none;" data-component="ocv" data-layout="right" data-locale="en-us" data-prod="true" data-appId="2285" data-rating="false">hidden</div> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10