CINXE.COM

Technical Description - Device and Productivity Software

<!doctype html> <html lang="en" class="no-js"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="description" content="Device and Productivity Software Services Documentation"> <meta name="author" content="CERN Authoring"> <link rel="canonical" href="https://devices.docs.cern.ch/devices/windows/cmf/technical_description/"> <link rel="icon" href="../../../../assets/images/favicon.png"> <meta name="generator" content="mkdocs-1.3.1, mkdocs-material-8.5.3"> <title>Technical Description - Device and Productivity Software</title> <link rel="stylesheet" href="../../../../assets/stylesheets/main.7a952b86.min.css"> <link rel="stylesheet" href="../../../../assets/stylesheets/palette.cbb835fc.min.css"> <link rel="stylesheet" href="../../../../css/style.css"> <link rel="stylesheet" href="../../../../stylesheets/fonts.css"> <script>__md_scope=new URL("../../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> </head> <body dir="ltr" data-md-color-scheme="" data-md-color-primary="none" data-md-color-accent="none"> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" for="__drawer"></label> <div data-md-component="skip"> <a href="#the-framework-concept" class="md-skip"> Skip to content </a> </div> <div data-md-component="announce"> </div> <header class="md-header" data-md-component="header"> <nav class="md-header__inner md-grid" aria-label="Header"> <a href="../../../.." title="Device and Productivity Software" class="md-header__button md-logo" aria-label="Device and Productivity Software" data-md-component="logo"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> </a> <label class="md-header__button md-icon" for="__drawer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> </label> <div class="md-header__title" data-md-component="header-title"> <div class="md-header__ellipsis"> <div class="md-header__topic"> <span class="md-ellipsis"> Device and Productivity Software </span> </div> <div class="md-header__topic" data-md-component="header-topic"> <span class="md-ellipsis"> Technical Description </span> </div> </div> </div> <label class="md-header__button md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> </label> <div class="md-search" data-md-component="search" role="dialog"> <label class="md-search__overlay" for="__search"></label> <div class="md-search__inner" role="search"> <form class="md-search__form" name="search"> <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> <label class="md-search__icon md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> </label> <nav class="md-search__options" aria-label="Search"> <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> </button> </nav> </form> <div class="md-search__output"> <div class="md-search__scrollwrap" data-md-scrollfix> <div class="md-search-result" data-md-component="search-result"> <div class="md-search-result__meta"> Initializing search </div> <ol class="md-search-result__list"></ol> </div> </div> </div> </div> </div> <div class="md-header__source"> <a href="https://gitlab.cern.ch/IT-DEP-CDA-AD/devices-docs" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> </div> <div class="md-source__repository"> it-cda-ad/devices-docs </div> </a> </div> </nav> </header> <div class="md-container" data-md-component="container"> <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> <div class="md-tabs__inner md-grid"> <ul class="md-tabs__list"> <li class="md-tabs__item"> <a href="../../../.." class="md-tabs__link"> Introduction </a> </li> <li class="md-tabs__item"> <a href="../../../" class="md-tabs__link md-tabs__link--active"> Devices </a> </li> <li class="md-tabs__item"> <a href="../../../../pss/" class="md-tabs__link"> Productivity Software </a> </li> </ul> </div> </nav> <main class="md-main" data-md-component="main"> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> <label class="md-nav__title" for="__drawer"> <a href="../../../.." title="Device and Productivity Software" class="md-nav__button md-logo" aria-label="Device and Productivity Software" data-md-component="logo"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> </a> Device and Productivity Software </label> <div class="md-nav__source"> <a href="https://gitlab.cern.ch/IT-DEP-CDA-AD/devices-docs" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> </div> <div class="md-source__repository"> it-cda-ad/devices-docs </div> </a> </div> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../.." class="md-nav__link"> Introduction </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2" type="checkbox" id="__nav_2" checked> <label class="md-nav__link" for="__nav_2"> Devices <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Devices" data-md-level="1"> <label class="md-nav__title" for="__nav_2"> <span class="md-nav__icon md-icon"></span> Devices </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../" class="md-nav__link"> Introduction </a> </li> <li class="md-nav__item"> <a href="../../../android/" class="md-nav__link"> Android </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_3" type="checkbox" id="__nav_2_3" > <label class="md-nav__link" for="__nav_2_3"> macOS <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="macOS" data-md-level="2"> <label class="md-nav__title" for="__nav_2_3"> <span class="md-nav__icon md-icon"></span> macOS </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../mac/" class="md-nav__link"> Introduction </a> </li> <li class="md-nav__item"> <a href="../../../mac/AboutAppleSiliconMacs/" class="md-nav__link"> About Apple Silicon ("M1") Macs </a> </li> <li class="md-nav__item"> <a href="../../../mac/macos_versions/" class="md-nav__link"> About macOS Versions </a> </li> <li class="md-nav__item"> <a href="../../../mac/AboutSoftwareUpdates/" class="md-nav__link"> About Software Updates </a> </li> <li class="md-nav__item"> <a href="../../../mac/PurchasingAppleHardware/" class="md-nav__link"> Purchasing Apple Hardware </a> </li> <li class="md-nav__item"> <a href="../../../mac/Installation/" class="md-nav__link"> Installation at CERN </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_3_7" type="checkbox" id="__nav_2_3_7" > <label class="md-nav__link" for="__nav_2_3_7"> Getting applications for macOS <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Getting applications for macOS" data-md-level="3"> <label class="md-nav__title" for="__nav_2_3_7"> <span class="md-nav__icon md-icon"></span> Getting applications for macOS </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../mac/AcquiringApplications/" class="md-nav__link"> Introduction </a> </li> <li class="md-nav__item"> <a href="../../../mac/MacSelfService/" class="md-nav__link"> The Mac Self-Service </a> </li> <li class="md-nav__item"> <a href="../../../mac/AppleAppStore/" class="md-nav__link"> The Apple App Store </a> </li> <li class="md-nav__item"> <a href="../../../mac/MicrosoftOfficeMac/" class="md-nav__link"> Microsoft Office Apps </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../mac/HomeFolders/" class="md-nav__link"> Home folders </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_3_9" type="checkbox" id="__nav_2_3_9" > <label class="md-nav__link" for="__nav_2_3_9"> The Mac Self-Service <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="The Mac Self-Service" data-md-level="3"> <label class="md-nav__title" for="__nav_2_3_9"> <span class="md-nav__icon md-icon"></span> The Mac Self-Service </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../mac/MacSelfService/" class="md-nav__link"> Introduction </a> </li> <li class="md-nav__item"> <a href="../../../mac/MacSelfService/Enrolling/" class="md-nav__link"> Enrolling a Mac </a> </li> <li class="md-nav__item"> <a href="../../../mac/MacSelfService/Using/" class="md-nav__link"> Using the Self-Service app </a> </li> <li class="md-nav__item"> <a href="../../../mac/MacSelfService/Troubleshooting/" class="md-nav__link"> Troubleshooting </a> </li> <li class="md-nav__item"> <a href="../../../mac/MacSelfService/Unenrolling/" class="md-nav__link"> Unenrolling a Mac </a> </li> <li class="md-nav__item"> <a href="../../../mac/MacSelfService/outdatedMajorOs/" class="md-nav__link"> Alerts for Unsupported Major OS versions </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../mac/printing/" class="md-nav__link"> Printing from macOS </a> </li> <li class="md-nav__item"> <a href="../../../mac/RepairingAppleHardware/" class="md-nav__link"> Repairing Apple Hardware </a> </li> <li class="md-nav__item"> <a href="../../../mac/AboutKerberosAndSsh/" class="md-nav__link"> Configuring kerberos and ssh </a> </li> <li class="md-nav__item"> <a href="../../../mac/sshTunnel/" class="md-nav__link"> Accessing Internal Webpages from Outside CERN </a> </li> <li class="md-nav__item"> <a href="../../../mac/DiskEncryption/" class="md-nav__link"> Disk Encryption </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_3_15" type="checkbox" id="__nav_2_3_15" > <label class="md-nav__link" for="__nav_2_3_15"> Further information <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Further information" data-md-level="3"> <label class="md-nav__title" for="__nav_2_3_15"> <span class="md-nav__icon md-icon"></span> Further information </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../mac/MacServiceDocs/" class="md-nav__link"> Mac Service (CERN Service Portal) </a> </li> <li class="md-nav__item"> <a href="../../../mac/MacCERNKBs/" class="md-nav__link"> Knowledge Base (CERN Service Portal) </a> </li> <li class="md-nav__item"> <a href="../../../mac/AppleDocs/" class="md-nav__link"> Apple Documentation </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > <label class="md-nav__link" for="__nav_2_4"> iOS <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="iOS" data-md-level="2"> <label class="md-nav__title" for="__nav_2_4"> <span class="md-nav__icon md-icon"></span> iOS </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../ios/" class="md-nav__link"> Introduction </a> </li> <li class="md-nav__item"> <a href="../../../mac/PurchasingAppleHardware/" class="md-nav__link"> Purchasing </a> </li> <li class="md-nav__item"> <a href="../../../ios/FrequentIssues/" class="md-nav__link"> Frequent Issues </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../ppc/" class="md-nav__link"> Public PC </a> </li> <li class="md-nav__item"> <a href="../../../kiosk/" class="md-nav__link"> Requesting a KIOSK </a> </li> <li class="md-nav__item"> <a href="../../../PC-HW/" class="md-nav__link"> Screens for PCs and Macs </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_8" type="checkbox" id="__nav_2_8" checked> <label class="md-nav__link" for="__nav_2_8"> Windows <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Windows" data-md-level="2"> <label class="md-nav__title" for="__nav_2_8"> <span class="md-nav__icon md-icon"></span> Windows </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../" class="md-nav__link"> Introduction </a> </li> <li class="md-nav__item"> <a href="../../setupWindowsForCERN/" class="md-nav__link"> Set up Windows device for CERN </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_8_3" type="checkbox" id="__nav_2_8_3" > <label class="md-nav__link" for="__nav_2_8_3"> About Windows versions <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="About Windows versions" data-md-level="3"> <label class="md-nav__title" for="__nav_2_8_3"> <span class="md-nav__icon md-icon"></span> About Windows versions </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../win11_new/" class="md-nav__link"> What is new in Windows 11 ? </a> </li> <li class="md-nav__item"> <a href="../../version/" class="md-nav__link"> Windows versions </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_8_4" type="checkbox" id="__nav_2_8_4" checked> <label class="md-nav__link" for="__nav_2_8_4"> CMF <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="CMF" data-md-level="3"> <label class="md-nav__title" for="__nav_2_8_4"> <span class="md-nav__icon md-icon"></span> CMF </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../" class="md-nav__link"> Introduction </a> </li> <li class="md-nav__item"> <a href="../users_guide/" class="md-nav__link"> How to use CMF </a> </li> <li class="md-nav__item"> <a href="../admin_guide/" class="md-nav__link"> Administrators Guide </a> </li> <li class="md-nav__item"> <a href="../project_requirements/" class="md-nav__link"> Project Requirements </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> <label class="md-nav__link md-nav__link--active" for="__toc"> Technical Description <span class="md-nav__icon md-icon"></span> </label> <a href="./" class="md-nav__link md-nav__link--active"> Technical Description </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#the-framework-concept" class="md-nav__link"> The Framework Concept </a> </li> <li class="md-nav__item"> <a href="#the-framework-layers" class="md-nav__link"> The Framework Layers </a> <nav class="md-nav" aria-label="The Framework Layers"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#the-frontend-layer" class="md-nav__link"> The Frontend Layer </a> </li> <li class="md-nav__item"> <a href="#the-database-layer" class="md-nav__link"> The Database Layer </a> </li> <li class="md-nav__item"> <a href="#the-backend-layer" class="md-nav__link"> The Backend layer </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#the-cmf-database" class="md-nav__link"> The CMF database </a> </li> <li class="md-nav__item"> <a href="#the-cmf-server-jobs" class="md-nav__link"> The CMF Server jobs </a> </li> <li class="md-nav__item"> <a href="#the-distribution-points" class="md-nav__link"> The distribution points </a> </li> <li class="md-nav__item"> <a href="#the-cmf-web-site" class="md-nav__link"> The CMF Web Site </a> </li> <li class="md-nav__item"> <a href="#the-cmf-client-software" class="md-nav__link"> The CMF Client software </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_8_5" type="checkbox" id="__nav_2_8_5" > <label class="md-nav__link" for="__nav_2_8_5"> CERN AppStore <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="CERN AppStore" data-md-level="3"> <label class="md-nav__title" for="__nav_2_8_5"> <span class="md-nav__icon md-icon"></span> CERN AppStore </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../CERNAppstore/client/" class="md-nav__link"> How to use CERN AppStore </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../encryption/" class="md-nav__link"> Disk Encryption </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_8_7" type="checkbox" id="__nav_2_8_7" > <label class="md-nav__link" for="__nav_2_8_7"> Further information <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Further information" data-md-level="3"> <label class="md-nav__title" for="__nav_2_8_7"> <span class="md-nav__icon md-icon"></span> Further information </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../windowsServiceDocs/" class="md-nav__link"> Windows Service (CERN Service Portal) </a> </li> <li class="md-nav__item"> <a href="../../windowsCERNKBs/" class="md-nav__link"> Knowledge Base (CERN Service Portal) </a> </li> <li class="md-nav__item"> <a href="../../microsoftDocs/" class="md-nav__link"> Microsoft Documentation </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../homeFolders/" class="md-nav__link"> Home folders </a> </li> <li class="md-nav__item"> <a href="../../installation/" class="md-nav__link"> Installation at CERN </a> </li> <li class="md-nav__item"> <a href="../../joindomain/" class="md-nav__link"> Joining the CERN domain </a> </li> <li class="md-nav__item"> <a href="../../windowsUpgrades/" class="md-nav__link"> Upgrading your Windows version </a> </li> <li class="md-nav__item"> <a href="../../updates/" class="md-nav__link"> Keeping your computer up-to-date </a> </li> <li class="md-nav__item"> <a href="../../WebAuthnWindows/" class="md-nav__link"> Using your fingerprint for 2FA </a> </li> <li class="md-nav__item"> <a href="../../win11_application/" class="md-nav__link"> Follow-up Windows 11 Migration </a> </li> <li class="md-nav__item"> <a href="../../win11_downgrade/" class="md-nav__link"> Downgrade from Windows 11 to Windows 10 </a> </li> <li class="md-nav__item"> <a href="../../create_a_windows_virtual_machine/" class="md-nav__link"> Create a Windows virtual machine </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_8_17" type="checkbox" id="__nav_2_8_17" > <label class="md-nav__link" for="__nav_2_8_17"> Managing permissions on the file system <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Managing permissions on the file system" data-md-level="3"> <label class="md-nav__title" for="__nav_2_8_17"> <span class="md-nav__icon md-icon"></span> Managing permissions on the file system </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../permissions/" class="md-nav__link"> Best practices to manage permissions </a> </li> <li class="md-nav__item"> <a href="../../acl/" class="md-nav__link"> ACLs, ACE, Permissions...How to handle File Security? </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../renameandmove/" class="md-nav__link"> Moving or renaming your computer </a> </li> <li class="md-nav__item"> <a href="../../printing/" class="md-nav__link"> Printing from Windows </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_8_20" type="checkbox" id="__nav_2_8_20" > <label class="md-nav__link" for="__nav_2_8_20"> Privacy on Windows <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Privacy on Windows" data-md-level="3"> <label class="md-nav__title" for="__nav_2_8_20"> <span class="md-nav__icon md-icon"></span> Privacy on Windows </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../privacy/" class="md-nav__link"> Windows 10 </a> </li> <li class="md-nav__item"> <a href="../../privacy_w11/" class="md-nav__link"> Windows 11 </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../hardware/" class="md-nav__link"> Purchasing Windows hardware </a> </li> <li class="md-nav__item"> <a href="../../hwRepair/" class="md-nav__link"> Repairing Windows hardware </a> </li> <li class="md-nav__item"> <a href="../../reset/" class="md-nav__link"> Resetting Windows hardware </a> </li> <li class="md-nav__item"> <a href="../../windowsServices/" class="md-nav__link"> Windows Toolbox webpage </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > <label class="md-nav__link" for="__nav_3"> Productivity Software <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Productivity Software" data-md-level="1"> <label class="md-nav__title" for="__nav_3"> <span class="md-nav__icon md-icon"></span> Productivity Software </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/" class="md-nav__link"> Introduction </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > <label class="md-nav__link" for="__nav_3_2"> Antivirus <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Antivirus" data-md-level="2"> <label class="md-nav__title" for="__nav_3_2"> <span class="md-nav__icon md-icon"></span> Antivirus </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/eset-windows/" class="md-nav__link"> ESET for Windows </a> </li> <li class="md-nav__item"> <a href="../../../../pss/eset-mac/" class="md-nav__link"> ESET for MacOS </a> </li> <li class="md-nav__item"> <a href="../../../../pss/morescan/" class="md-nav__link"> More security scanners for Windows </a> </li> <li class="md-nav__item"> <a href="../../../../pss/mbamclean/" class="md-nav__link"> Malwarebytes Support Tool </a> </li> <li class="md-nav__item"> <a href="../../../../pss/defend/" class="md-nav__link"> Windows Defender </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > <label class="md-nav__link" for="__nav_3_3"> Authoring (e-Learning) <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Authoring (e-Learning)" data-md-level="2"> <label class="md-nav__title" for="__nav_3_3"> <span class="md-nav__icon md-icon"></span> Authoring (e-Learning) </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/atomi-ap/" class="md-nav__link"> Atomi ActivePresenter </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_4" type="checkbox" id="__nav_3_4" > <label class="md-nav__link" for="__nav_3_4"> Connectivity software <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Connectivity software" data-md-level="2"> <label class="md-nav__title" for="__nav_3_4"> <span class="md-nav__icon md-icon"></span> Connectivity software </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/andftp/" class="md-nav__link"> AndFTP (Android) </a> </li> <li class="md-nav__item"> <a href="../../../../pss/RemoteDesktopClientMac/" class="md-nav__link"> Windows App (Mac) </a> </li> <li class="md-nav__item"> <a href="../../../../pss/putty/" class="md-nav__link"> PuTTY (Windows) </a> </li> <li class="md-nav__item"> <a href="../../../../pss/PaloAltoVPN/" class="md-nav__link"> PaloAlto VPN (Windows) </a> </li> <li class="md-nav__item"> <a href="../../../../pss/termbot/" class="md-nav__link"> Termbot (Android) </a> </li> <li class="md-nav__item"> <a href="../../../../pss/xquartz/" class="md-nav__link"> XQuartz (macOS) </a> </li> <li class="md-nav__item"> <a href="../../../../pss/xwin32/" class="md-nav__link"> XWin-32 (Windows) </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_5" type="checkbox" id="__nav_3_5" > <label class="md-nav__link" for="__nav_3_5"> Cloud storage <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Cloud storage" data-md-level="2"> <label class="md-nav__title" for="__nav_3_5"> <span class="md-nav__icon md-icon"></span> Cloud storage </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/cernbox/" class="md-nav__link"> CERNBox </a> </li> <li class="md-nav__item"> <a href="../../../../pss/onedrive_cern/" class="md-nav__link"> OneDrive </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_6" type="checkbox" id="__nav_3_6" > <label class="md-nav__link" for="__nav_3_6"> Development <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Development" data-md-level="2"> <label class="md-nav__title" for="__nav_3_6"> <span class="md-nav__icon md-icon"></span> Development </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/visualstudio/" class="md-nav__link"> MS Visual Studio </a> </li> <li class="md-nav__item"> <a href="../../../../pss/VSCode/" class="md-nav__link"> Visual Studio Code </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_7" type="checkbox" id="__nav_3_7" > <label class="md-nav__link" for="__nav_3_7"> Diagrams <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Diagrams" data-md-level="2"> <label class="md-nav__title" for="__nav_3_7"> <span class="md-nav__icon md-icon"></span> Diagrams </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/diagrams/" class="md-nav__link"> Introduction </a> </li> <li class="md-nav__item"> <a href="../../../../pss/draw.io/" class="md-nav__link"> Draw.IO </a> </li> <li class="md-nav__item"> <a href="../../../../pss/visionline/" class="md-nav__link"> MS Visio Online </a> </li> <li class="md-nav__item"> <a href="../../../../pss/visio365/" class="md-nav__link"> MS Visio 365 </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_8" type="checkbox" id="__nav_3_8" > <label class="md-nav__link" for="__nav_3_8"> Graphics editing <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Graphics editing" data-md-level="2"> <label class="md-nav__title" for="__nav_3_8"> <span class="md-nav__icon md-icon"></span> Graphics editing </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/adobecreativecloud/" class="md-nav__link"> Adobe Creative Cloud </a> </li> <li class="md-nav__item"> <a href="../../../../pss/gimp/" class="md-nav__link"> Gimp </a> </li> <li class="md-nav__item"> <a href="../../../../pss/inkscape/" class="md-nav__link"> Inkscape </a> </li> <li class="md-nav__item"> <a href="../../../../pss/paintnet/" class="md-nav__link"> Paint.NET (Windows) </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_9" type="checkbox" id="__nav_3_9" > <label class="md-nav__link" for="__nav_3_9"> Note taking <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Note taking" data-md-level="2"> <label class="md-nav__title" for="__nav_3_9"> <span class="md-nav__icon md-icon"></span> Note taking </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/codi/" class="md-nav__link"> CodiMD </a> </li> <li class="md-nav__item"> <a href="../../../../pss/onenote/" class="md-nav__link"> OneNote </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_10" type="checkbox" id="__nav_3_10" > <label class="md-nav__link" for="__nav_3_10"> Office suites <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Office suites" data-md-level="2"> <label class="md-nav__title" for="__nav_3_10"> <span class="md-nav__icon md-icon"></span> Office suites </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/office-suites/" class="md-nav__link"> Introduction </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_10_2" type="checkbox" id="__nav_3_10_2" > <label class="md-nav__link" for="__nav_3_10_2"> Microsoft Office <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Microsoft Office" data-md-level="3"> <label class="md-nav__title" for="__nav_3_10_2"> <span class="md-nav__icon md-icon"></span> Microsoft Office </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/office365/" class="md-nav__link"> Using Office 365 </a> </li> <li class="md-nav__item"> <a href="../../../../pss/ms_office/" class="md-nav__link"> Office 365 Privacy </a> </li> <li class="md-nav__item"> <a href="../../../../pss/proofing/" class="md-nav__link"> Proofing Tools for Office 365 </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../../pss/overleaf/" class="md-nav__link"> Overleaf </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../../pss/pdf-reading/" class="md-nav__link"> PDF reading </a> </li> <li class="md-nav__item"> <a href="../../../../pss/microsoft_copilot/" class="md-nav__link"> Microsoft Copilot </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_13" type="checkbox" id="__nav_3_13" > <label class="md-nav__link" for="__nav_3_13"> PDF editing <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="PDF editing" data-md-level="2"> <label class="md-nav__title" for="__nav_3_13"> <span class="md-nav__icon md-icon"></span> PDF editing </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/preview/" class="md-nav__link"> Preview (macOS) </a> </li> <li class="md-nav__item"> <a href="../../../../pss/pdfxchange/" class="md-nav__link"> PDF-XChange (Windows) </a> </li> <li class="md-nav__item"> <a href="../../../../pss/pdfexpert/" class="md-nav__link"> PDF Expert (macOS) </a> </li> <li class="md-nav__item"> <a href="../../../../pss/adobeacrobat/" class="md-nav__link"> Adobe Acrobat Pro DC </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_14" type="checkbox" id="__nav_3_14" > <label class="md-nav__link" for="__nav_3_14"> Password management <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Password management" data-md-level="2"> <label class="md-nav__title" for="__nav_3_14"> <span class="md-nav__icon md-icon"></span> Password management </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/keepass2android/" class="md-nav__link"> Keepass2Android </a> </li> <li class="md-nav__item"> <a href="../../../../pss/keepass_xc/" class="md-nav__link"> Keepass XC </a> </li> <li class="md-nav__item"> <a href="../../../../pss/strongbox/" class="md-nav__link"> Strongbox (iOS) </a> </li> <li class="md-nav__item"> <a href="../../../../pss/tbag/" class="md-nav__link"> tbag </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_15" type="checkbox" id="__nav_3_15" > <label class="md-nav__link" for="__nav_3_15"> Project management <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Project management" data-md-level="2"> <label class="md-nav__title" for="__nav_3_15"> <span class="md-nav__icon md-icon"></span> Project management </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/gantt-chart-viewer/" class="md-nav__link"> Gantt Chart Viewer </a> </li> <li class="md-nav__item"> <a href="../../../../pss/jira/" class="md-nav__link"> JIRA </a> </li> <li class="md-nav__item"> <a href="../../../../pss/project/" class="md-nav__link"> Microsoft Project </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_16" type="checkbox" id="__nav_3_16" > <label class="md-nav__link" for="__nav_3_16"> Virtualization software <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Virtualization software" data-md-level="2"> <label class="md-nav__title" for="__nav_3_16"> <span class="md-nav__icon md-icon"></span> Virtualization software </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/hyperv/" class="md-nav__link"> Hyper-V (Windows) </a> </li> <li class="md-nav__item"> <a href="../../../../pss/openstack/" class="md-nav__link"> OpenStack </a> </li> <li class="md-nav__item"> <a href="../../../../pss/virtualbox/" class="md-nav__link"> Oracle VirtualBox </a> </li> <li class="md-nav__item"> <a href="../../../../pss/parallels/" class="md-nav__link"> Parallels (macOS) </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_17" type="checkbox" id="__nav_3_17" > <label class="md-nav__link" for="__nav_3_17"> Web Authoring software <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Web Authoring software" data-md-level="2"> <label class="md-nav__title" for="__nav_3_17"> <span class="md-nav__icon md-icon"></span> Web Authoring software </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../pss/webauth/" class="md-nav__link"> Web Authoring tools for Desktops </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#the-framework-concept" class="md-nav__link"> The Framework Concept </a> </li> <li class="md-nav__item"> <a href="#the-framework-layers" class="md-nav__link"> The Framework Layers </a> <nav class="md-nav" aria-label="The Framework Layers"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#the-frontend-layer" class="md-nav__link"> The Frontend Layer </a> </li> <li class="md-nav__item"> <a href="#the-database-layer" class="md-nav__link"> The Database Layer </a> </li> <li class="md-nav__item"> <a href="#the-backend-layer" class="md-nav__link"> The Backend layer </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#the-cmf-database" class="md-nav__link"> The CMF database </a> </li> <li class="md-nav__item"> <a href="#the-cmf-server-jobs" class="md-nav__link"> The CMF Server jobs </a> </li> <li class="md-nav__item"> <a href="#the-distribution-points" class="md-nav__link"> The distribution points </a> </li> <li class="md-nav__item"> <a href="#the-cmf-web-site" class="md-nav__link"> The CMF Web Site </a> </li> <li class="md-nav__item"> <a href="#the-cmf-client-software" class="md-nav__link"> The CMF Client software </a> </li> </ul> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <a href="https://gitlab.cern.ch/IT-DEP-CDA-AD/devices-docs/blob/master/docs/devices/windows/cmf/technical_description.md" title="Edit this page" class="md-content__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25Z"/></svg> </a> <h1>Technical Description</h1> <h2 id="the-framework-concept">The Framework Concept</h2> <p>The Framework is based on a hierarchical concept of delegation between a master and sub-domains. A domain is called a Named System Set (NSS) in the Framework concept. The idea is that each NSS can control well defined sets of computer or user groups. The role for each NSS is defined by the permissions it gets granted from the master NSS. In our model, the NICE group (IT/IS) acts as master NSS. The master NSS has full control over the whole domain and can create other NSSs and grant permissions to it.</p> <p>More details about what can be controlled are described in the Users Guide.</p> <p>The concept of the framework, which is mostly visible through the Frontend layer, is illustrated in the following picture:</p> <p><img alt="https://cmf-dev.web.cern.ch/cmf-dev/Help/Contents/Images/Technical%20Description/image004.png" src="../img/technical_description/image4.png" />聽</p> <p>The Framework Implementation and Building Blocks</p> <p>This chapter will summarize the various implementation technologies of the聽layers of the Framework.</p> <h2 id="the-framework-layers">The Framework Layers</h2> <p>The Framework consists of a top to bottom 3 layers model, which are completely separated. Any layer can be replaced by another technology at any time without interference with the other layers.</p> <p><img alt="https://cmf-dev.web.cern.ch/cmf-dev/Help/Contents/Images/Technical%20Description/image001.gif" src="../img/technical_description/image1.gif" />聽<img alt="https://cmf-dev.web.cern.ch/cmf-dev/Help/Contents/Images/Technical%20Description/image002.gif" src="../img/technical_description/image2.gif" />聽<img alt="https://cmf-dev.web.cern.ch/cmf-dev/Help/Contents/Images/Technical%20Description/image003.gif" src="../img/technical_description/image3.gif" /></p> <p>The top layer, called the Frontend layer, defines the user interface. This part includes everything what interacts directly with the administrators and users. It is a set of tools to manage, control and return reports from the system. All the tools are web-based which makes the Frontend layer platform independent.</p> <p>The bottom layer, called the Backend layer, is the software running on a central server system and on all participating clients. This software performs all actions which are defined by the Frontend layer.</p> <p>The middle layer, called the Database layer, acts as the connection between the Frontend and Backend. It holds all configuration data submitted by the Frontend tools and all reporting generated by the Backend software.</p> <h3 id="the-frontend-layer">The Frontend Layer</h3> <p>The Frontend layer is completely web-based and has been developed in C# under Visual Studio .Net. It will consist of 3 types of graphical user interface tools:</p> <ul> <li> <p><strong>Management Tools</strong>: Interfaces to create, manage and delete NSSs, NSCs and PKGs. It includes an information flow mechanism for adding computers to NSCs as well as for informing Locally Managed NSC Admins when new packages are created.</p> </li> <li> <p><strong>User Tools</strong>: Wizards replacing the actual Add/Remove Programs applet. These interfaces provide a global view on all allowed, applied and denied PKGs.聽These tools are also directlt accessible from the CMF system tray icon.</p> </li> <li> <p><strong>Status Pages and Reports</strong>: Web based interfaces reflect the status of a single desktop (used by normal user) or the status of a complete NSC (used by NSC Admins). It is possible to detect incoherencies between the configuration data stored in the Framework database and the real desktop configurations. It provides a single view to check whether the members of a NSC are up to date.</p> </li> </ul> <p>All changes are logged in the database.</p> <h3 id="the-database-layer">The Database Layer</h3> <p>We聽use a Microsoft SQL server as central database for all configuration and reporting data, except for the NSC memberships which are directly stored in the CERN Active Directory as security groups. These groups are automatically updated when a computer is removed from the CERN domain. Another advantage is that these security groups can be directly applied on Group Policy Objects.聽All databasew access must be done via the聽Frontend layer, which聽runs with聽elevated privileges and taking into account the logged on user permissions.</p> <h3 id="the-backend-layer">The Backend layer</h3> <p>The implementation of the back-end layer is done by 2 programs running on each client PC. The CMFAgent service running under the SYSTEM account is responsible for all actions. The CMFAgentUI application running in the user context聽acts as the interface between the user and the service.</p> <p>The communication between the database and the client PC is performed by 3 file servers, called distribution points. Various scheduled jobs running on a dedicated server are acting as interface between the distribution points and the database to transfer the data between these 2 systems.</p> <p>The CMF backend software is also based on the Microsoft .NET technology and is completely written in C#.</p> <h2 id="the-cmf-database">The CMF database</h2> <p>The 2 CMF SQL databases are located on CERNCMF01:</p> <ul> <li>CMF administration database: This database holds all client configuration data which is populated by the CMF web site. The following picture shows the relationships between the tables.</li> </ul> <p><img alt="https://cmf-dev.web.cern.ch/cmf-dev/Help/Contents/Images/Technical%20Description/dbcmf.jpg" src="../img/technical_description/image5.jpeg" /></p> <p>A dedicated server job is triggered by every database update. Taking into account the changes, this job re-generates the required flat files (eg. CMFPKGs.TXT, CMFNSCs.TXT,.. ) which are on their turn used by the CMF client agent.</p> <ul> <li>CMF reporting database: This database holds all client reporting data and is populated by a dedicated server job taking information from all individual PC reporting data files located on the distribution points. Data from all clients is uploaded on a daily basis during the night. That means that data will be uploaded to the database even if the desktops are offline.</li> </ul> <h2 id="the-cmf-server-jobs">The CMF Server jobs</h2> <p>The following server jobs are running on CERNCMF01:</p> <ul> <li> <p><strong>CMFSRV</strong>: This job is triggered by every database update from the web site. Every update made from the web site, creates a record in Front End User Action Log table. These new records are analyzed by the CMFSRV task which re-generates the corresponding flat files and acknowledges the request by setting a timestamp in the ServerAck field of the record. This job runs continuously.</p> </li> <li> <p><strong>CMFGPO</strong>: This job is triggered when saving a package of the type Group Policy. It creates or deletes the GPO is needed and sets the required permissions. The communication with the web site is done via an IPC file. This job runs continuously.</p> </li> <li> <p><strong>CMFReportSrv</strong>: This job scans all report files from the distribution points, looks for eventual critical client errors and application deployment problems; and populates the database with these results. The job runs on a regular base.</p> </li> <li> <p><strong>CMFReportingCMD2</strong>: This program is the core program updating at least once per day all inventory and applications data of all machines. For metering you can control for how long metering information can be kept in the CMF database. By default for private policy reasons, it is deleted after 4 months.</p> <p>Logs can be found on CERNCMF01 in the 'CMF\SrvLogs\Reporting' folder</p> </li> </ul> <h2 id="the-distribution-points">The distribution points</h2> <p>The distribution points are simple file servers which in charge to distribute configuration data to the CMF clients and to receive the reporting data. At present, the client load is spread over are 3 distribution points. Each client is checking the configuration data on a distribution point and sending reporting data on a regular base.</p> <h2 id="the-cmf-web-site">The CMF Web Site</h2> <p>The administration part of the CMF web site is mostly acting on the administration database, except for NSC memberships, which are directly stored in Active Directory. Each NSC holds 2 security groups, one for computers (CMF_NSC_[id]) and one for users (CMF_NSC_[id]_NSU). All groups are located in OU=NSC,OU=CMF,DC=cern,DC=ch.</p> <p>The package editing page is also acting on Active Directory for the creation and update of Group Policy Objects. Since not all GPO related actions can be carried within the web pages, some of them are performed by a permanently running job which is talking with the web page via an IPC file.</p> <h2 id="the-cmf-client-software">The CMF Client software</h2> <p>The CMF software running on the client PC consists of 3 programs:</p> <ul> <li> <p><strong>CMFAgent</strong>: This program, running as a service, is responsible for all actions carried out on the client. It checks the distribution point on a regular base, downloads the necessarily files and verifies the installation of all CMF packages. The program has no user interface and communicates with the user via another program CMFAgentUI running in the user's context. </p> </li> <li> <p><strong>CMFAgentUI</strong>: This application, running in the user's context, is accessible via the CMF system tray icon. The application does not perform any action on the PC, but is more an interface between the user and the CMFAgent service.</p> </li> <li> <p><strong>CMFAgentUpdate</strong>: As both CMFAgent and CMFAgentUI program have an automated version update feature built-in, they cannot be replaced during run-time. When CMFAgent or CMFAgentUI detect a new version on the server, they make a local temporarily copy and launch CMFAgentUpdate just before killing themselves. CMFAgentUpdate on its turn, copies the file and restarts the program (CMFAgent or CMFAgentUI following what specified as command line option).</p> </li> </ul> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> </div> </main> <footer class="md-footer"> <nav class="md-footer__inner md-grid" aria-label="Footer" > <a href="../project_requirements/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Project Requirements" rel="prev"> <div class="md-footer__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> </div> <div class="md-footer__title"> <div class="md-ellipsis"> <span class="md-footer__direction"> Previous </span> Project Requirements </div> </div> </a> <a href="../../CERNAppstore/client/" class="md-footer__link md-footer__link--next" aria-label="Next: How to use CERN AppStore" rel="next"> <div class="md-footer__title"> <div class="md-ellipsis"> <span class="md-footer__direction"> Next </span> How to use CERN AppStore </div> </div> <div class="md-footer__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></svg> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class="md-copyright"> Made with <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> Material for MkDocs </a> </div> </div> </div> </footer> </div> <div class="md-dialog" data-md-component="dialog"> <div class="md-dialog__inner md-typeset"></div> </div> <script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.tabs", "content.tabs.link"], "search": "../../../../assets/javascripts/workers/search.5bf1dace.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version.title": "Select version"}}</script> <script src="../../../../assets/javascripts/bundle.37e9125f.min.js"></script> </body> </html>

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