Skip to main content

Office 365 Management with System Center Configuration Manager – Current Branch 1606

This section describes the Office 365 application implemented.

1.1       Observations

The current estate contains a range of Office suite and standalone products (Standard, ProPlus, Outlook, Lync, Visio, and Project) as well as a range/mix of versions on each system; from 2007- 2016.

1.2       Application Deployment

An Office 365 application has been created in English.  Each application source directory is about 1.2GB in size and has been distributed to all corresponding DP’s.  Note: it is possible to install multiple languages of Office 365 on a single system however, the first installation will take ownership of the UI Shell i.e. Menus, drop –downs etc.

1.3       Office 2016 Deployment Tool for Click-to-Run

The source files for Office 365 can be downloaded via the Click-To-Run URL here. This will download and extract two files (setup.exe and Configuration.xml). A download.xml and install.xml can be extrapolated from the accompanied configuration.xml; see below.
“The Office 2016 Deployment Tool allows the administrator to customize and manage Office 2016 Click-to-Run deployments. This tool will help administrators to manage installations sources, product/language combinations, and deployment configuration options for Office Click-to-Run.” http://www.microsoft.com/en-us/download/details.aspx?id=36778
Product IDs that are supported by the Office Deployment Tool for Click-to-Run https://support.microsoft.com/en-us/help/2842297/product-ids-that-are-supported-by-the-office-deployment-tool-for-click-to-run 

1.4       Download.xml

The download.xml within the source files is kept as reference but is no longer required as part of the application deployment. A custom download.xml was created for the initial download. The Language tags (language IDs), and LCIDs available in Office 2016 can be found here
The command line to download content is: setup.exe /download download.xml
<Configuration>
  <Add SourcePath="" OfficeClientEdition="32" >
   <Product ID="O365ProPlusRetail">
       <Language ID="en-us" />
   </Product>
</Add>
</Configuration>

1.5       Example.xml

The install.xml file within the source files controls the installation behaviour during the SCCM deployment i.e. language, product, logging etc. The Language tags (language IDs), and LCIDs available in Office 2016 can be found here
Microsoft 365 ProPlus 
The command line to install is: setup.exe /configure Installation.xml
<Configuration>
 <Add OfficeClientEdition="32" Channel="Current" OfficeMgmtCOM="True">
    <Product ID="O365ProPlusRetail">
      <Language ID="en-us" />
    </Product>
  </Add>
 <Updates Enabled="TRUE" />
<Display Level="None" AcceptEULA="TRUE" />
 <Logging Path="%Windir%\Temp\" />
 <Property Name="AUTOACTIVATE" Value="1" />
</Configuration>

i.e. <Updates Enabled="TRUE" UpdatePath=”\\ServerName\Share$\ />

Microsoft Office Deployment Tool volume licensed editions of Visio 2016 and Project 2016 
The command line to install is: setup.exe /configure Installation_ProjectProXVolume.xml
<Configuration>
 <Add OfficeClientEdition="32" Channel="Current" OfficeMgmtCOM="True">
  <Product ID="ProjectProXVolume">
      <Language ID="en-us" />
    </Product>
  </Add>
 <Updates Enabled="TRUE" />
 <Display Level="none" AcceptEULA="TRUE" />
 <Logging Path="%Windir%\Temp\" />
 <Property Name="AUTOACTIVATE" Value="1" />
</Configuration>

The command line to install is: setup.exe /configure Installation_VisioProXVolume.xml
<Configuration>
 <Add OfficeClientEdition="32" Channel="Current" OfficeMgmtCOM="True">
  <Product ID="VisioProXVolume">
      <Language ID="en-us" />
    </Product>
  </Add>
 <Updates Enabled="TRUE" />
 <Display Level="none" AcceptEULA="TRUE" />
 <Logging Path="%Windir%\Temp\" />
 <Property Name="AUTOACTIVATE" Value="1" />
</Configuration>



SourcePath indicates the installation source path from which to install Office when you run the Office Deployment Tool in configure mode. If you do not specify SourcePath in configure mode, Setup will look in the current folder for the Office source files. If the Office source files are not found in the current folder, Setup will look on Office 365 for them. SourcePath indicates the location to save the Click-to-Run installation source when you run the Office Deployment Tool in download mode.
OfficeClientEdition specifies the edition of Click-to-Run for Office 365 product to use.
Product ID specifies the products to install. (Check here for a complete list of Product IDs that is supported by the Office Deployment Tool for Click-to-Run)
Language ID specifies which product languages to install. (Check here for a complete list of available Language IDs)
Updates Enabled=”TRUE” specifies that the Click-to-Run update system will check for updates.
UpdatePath specifies the path where Click-to-Run installations obtain updates. Optional. If UpdatePath is not set, Click-to-Run installations obtain updates from the Microsoft Click-to-Run source (Content Delivery Network or CDN). This is by default. If UpdatePath is set to empty (""), updates are obtained from the Microsoft Click-to-Run source, CDN.
UpdatePath can specify a network, local, or HTTP path of a Click-to-Run source. Environment variables can be used for network or local paths. If you use Group Policy with the Office 2016 or Office 2016 Administrative Template files (ADMX/ADML), you can set UpdatePath by using the Update Path policy setting. You can find this policy setting under Computer Configuration\Administrative Templates\Microsoft Office 2016 (Machine)\Updates.
OfficeMgmtCOM specifies that the client is managed and Updates are controlled from a central system; SCCM. This option effectively makes the UpdatePath option redundant.
Display Level=”None” specifies that the user sees no UI. No progress UI, completion screen, error dialog boxes, or first run automatic start UI are displayed.
AcceptEULA=”TRUE” specifies that user does not see a Microsoft Software License Terms dialog Box.
Logging Path specifies the path of the folder that is used for the log file. (Name is no longer a supported attribute to use for setting the name of the log file)

1.6       previous versions of Office

Update: 03/07/2018 - If using the latest Setup.exe you can make use of the switch <RemoveMSI All="True" /> and these Office Scrub scripts are note required.
Office 365 installation files will not automatically remove or upgrade previous versions; it is recommended to remove previous versions prior to deploying Office 365. Microsoft have provided uninstallation VBS scripts to remove all or selective Office products i.e. Standard, ProPlus, Outlook, Visio, Project, ALL etc.
The VBS scripts have been extracted from the MSI’s; the process is it run the MSI accepting the EULA and once the FixIt tool is ready (see the screen below) asking you click Next; open Windows Explorer to navigate to: C:\Users\%USERNAME%\AppData\Local\Temp\Fixit

Click on the hyperlinks below to direct you to the site in which you can download the MSI.





These scripts have been incorporated into the source files for Office 365 and can be called as follows:
cscript //B %~dp0Offscrub07.vbs ProPlus,Standard,Outlook /quiet /nocancel
cscript //B %~dp0Offscrub10.vbs ProPlus,Standard,Outlook /quiet /nocancel
cscript //B %~dp0OffScrub_O15msi.vbs All /quiet /nocancel
cscript //B %~dp0OffScrub_O16msi.vbs All /quiet /nocancel

1.7       Install.cmd

The Install CMD command calls a PowerShell script to provide the user with feedback during installation.
powershell -ExecutionPolicy Bypass .\AppDeploy.ps1
The AppDeploy.ps1 script is based on the “PowerShell App Deployment Toolkit” http://psappdeploytoolkit.com/
The extract below highlights some of the key sections:
1.       Check to see if any of the applications are running and allow the User to defer the installation 3 times.
2.       Check and record whether the device has Visio and/or Project installed
3.       Remove all Previous versions of Office 2003-2016
4.       Install Office 365 ProPlus and Volume Licensed Click to Run versions of Visio and/or Project if previously installed.
#*===============================================
#* PRE-INSTALLATION
If ($deploymentType -ne "uninstall") { $installPhase = "Pre-Installation"
#*===============================================

 # Show Welcome Message, close Internet Explorer if required, allow up to 3 deferrals, and verify there is enough disk space to complete the install
 Show-InstallationWelcome -CloseApps "iexplore,PWConsole,excel,groove,onenote,infopath,onenote,outlook,mspub,powerpnt,winword,communicator,lync" -BlockExecution -AllowDefer -CloseAppsCountdown 600 -DeferTimes 3 -CheckDiskSpace

# Check whether anything might prevent us from running the cleanup
 If (($isServerOS -eq $true)) {
 Write-Log "Installation of components has been skipped as one of the following options are enabled. isServerOS: $isServerOS"
 }

 # Display Pre-Install cleanup status
 Show-InstallationProgress "Performing Pre-Install cleanup. This may take some time. Please wait..."

# Remove any previous version of Office (if required)
 $officeExecutables = @("excel.exe", "groove.exe", "onenote.exe", "infopath.exe", "onenote.exe", "outlook.exe", "mspub.exe", "powerpnt.exe", "winword.exe", "winproj.exe", "Visio.exe")


 If (Test-Path (Join-Path $dirOffice "Office12\Visio.exe")) {$InstallVisio=$TrueWrite-Log "Office12\Visio.exe was detected. To be updated."}
 If (Test-Path (Join-Path $dirOffice "Office12\winproj.exe")) {$InstallProject=$TrueWrite-Log "Office12\winproj.exe was detected. To be updated."}
 If (Test-Path (Join-Path $dirOffice "Office14\Visio.exe")) {$InstallVisio=$TrueWrite-Log "Office14\Visio.exe was detected. To be updated."}
 If (Test-Path (Join-Path $dirOffice "Office14\winproj.exe")) {$InstallProject=$TrueWrite-Log "Office14\winproj.exe was detected. To be updated."}
 If (Test-Path (Join-Path $dirOffice "Office15\Visio.exe")) {$InstallVisio=$TrueWrite-Log "Office15\Visio.exe was detected. To be updated."}
 If (Test-Path (Join-Path $dirOffice "Office15\winproj.exe")) {$InstallProject=$TrueWrite-Log "Office15\winproj.exe was detected. To be updated."}
 If (Test-Path (Join-Path $dirOffice "Office16\Visio.exe")) {$InstallVisio=$TrueWrite-Log "Office16\Visio.exe was detected. To be updated."}
 If (Test-Path (Join-Path $dirOffice "Office16\winproj.exe")) {$InstallProject=$TrueWrite-Log "Office16\winproj.exe was detected. To be updated."}

 ForEach ($officeExecutable in $officeExecutables) {
 If (Test-Path (Join-Path $dirOffice "Office12\$officeExecutable")) {
 Write-Log "Microsoft Office 2007 was detected. Will be uninstalled."
 Execute-Process -FilePath "CScript.Exe" -Arguments "`"$dirSupportFiles\OffScrub07.vbs`" ALL /S /Q /NoCancel" -WindowStyle Hidden -IgnoreExitCodes "1,2,3"
 Break
 }
 }
 ForEach ($officeExecutable in $officeExecutables) {
 If (Test-Path (Join-Path $dirOffice "Office14\$officeExecutable")) {
 Write-Log "Microsoft Office 2010 was detected. Will be uninstalled."
 Execute-Process -FilePath "CScript.Exe" -Arguments "`"$dirSupportFiles\OffScrub10.vbs`" ALL /S /Q /NoCancel" -WindowStyle Hidden -IgnoreExitCodes "1,2,3"
 Break
 }
 }
 ForEach ($officeExecutable in $officeExecutables) {
 If (Test-Path (Join-Path $dirOffice "Office15\$officeExecutable")) {
 Write-Log "Microsoft Office 2013 was detected. Will be uninstalled."
 Execute-Process -FilePath "CScript.Exe" -Arguments "`"$dirSupportFiles\OffScrub_O15msi.vbs`" ALL /S /Q /NoCancel" -WindowStyle Hidden -IgnoreExitCodes "1,2,3"
 Break
 }
 }
  ForEach ($officeExecutable in $officeExecutables) {
 If (Test-Path (Join-Path $dirOffice "Office16\$officeExecutable")) {
 Write-Log "Microsoft Office 2013 was detected. Will be uninstalled."
 Execute-Process -FilePath "CScript.Exe" -Arguments "`"$dirSupportFiles\OffScrub_O16msi.vbs`" ALL /S /Q /NoCancel" -WindowStyle Hidden -IgnoreExitCodes "1,2,3"
 Break
 }
 }


#*===============================================
#* INSTALLATION
$installPhase = "Installation"
#*===============================================

# Installing Office 365 Pro Plus
 Show-InstallationProgress "Installing Office 365 Pro Plus. This may take some time. Please wait..."
 Execute-Process -FilePath "$dirFiles\Office365ProPlus\setup.exe" -Arguments " /configure `"$dirFiles\Office365ProPlus\Installation.xml`"" -WindowStyle Hidden -IgnoreExitCodes "3010"

 # Installing Office 365 volume licensed edition of Visio 2016
 If ($InstallVisio -eq $true) {
 Show-InstallationProgress "Installing Office 365 volume licensed edition of Visio 2016. This may take some time. Please wait..."
 Execute-Process -FilePath "$dirFiles\Office365ProPlus\setup.exe" -Arguments " /configure `"$dirFiles\Office365ProPlus\Installation_VisioProXVolume.xml`"" -WindowStyle Hidden -IgnoreExitCodes "3010"
 }

 # Installing Office 365 volume licensed edition of Project 2016
  If ($InstallProject -eq $true) {
 Show-InstallationProgress "Installing Office 365 volume licensed edition of Project 2016. This may take some time. Please wait..."
 Execute-Process -FilePath "$dirFiles\Office365ProPlus\setup.exe" -Arguments " /configure `"$dirFiles\Office365ProPlus\Installation_ProjectProXVolume.xml`"" -WindowStyle Hidden -IgnoreExitCodes "3010"
 }



2          updates for Office 365

Automatic updates is a servicing model built into Office 365 ProPlus, and provides the ability to be always up to date, or “evergreen”, with security and functionality enhancements. 
A default install of Office 365 ProPlus is configured to update automatically from the cloud.  Separately, each month a new build of Office 365 ProPlus is released in the cloud.  When a computer with Office 365 ProPlus detects that a new build is available, the difference – or delta – between the new build and the existing one is streamed down in the background.  Updates are then installed when Office apps/processes aren’t running. So, with the default configuration Office 365 ProPlus, you will always be up-to-date.
Some environments may prefer to use their existing software distribution tool to manage updates for Office 365 ProPlus, and this can be facilitated using the Office Deployment Tool.  IT Pros can customize the configuration by controlling if updates are managed. For example you can pass full management over to SCCM via the initial install.xml, via GPO or SCCM client policy. Office 365 ProPlus updates are provided by Windows Update and incorporated into SCCM Software updates Groups. 


The way that the users in your organization receive the updates for Office depends on where you've configured Office 365 ProPlus to get updates.
·         From the Internet   If you've configured your users to get updates directly from the Office Content Delivery Network (CDN) on the Internet.
o    If you don’t want these users to be updated automatically you can configure this either by using the Office Deployment Tool or by using Group Policy and the Update Path policy setting.
·         From SCCM /WSUS This will be the obvious choice for Enterprises as patching integrates into current processes.


Office 365 Management with System Center Configuration Manager – Current Branch 1602
Assumptions: SCCM CB 1606 has been installed with the SUP site system role installed successfully.

The default behaviour of the client will check for updates every time an Office 365 application is run.  Previously the administrator was unable to manage which branch the client would have installed using WSUS.  Thankfully this has been addressed; in the 1602 onwards current branch of Configuration Manager it is now possible to manage Office 365 updates natively without the clients going to either the Internet or a network share as described above. 
Within System Center Configuration Manager the ability to enable is very simple.  Select the Classification “Updates” and the Product “Office 365 Client”.  Then the next time Software updates Synchronize the current branch will be available to download and deploy as a normal Windows Update.

wsyncmgr.log extract The log will detail the selections made when it attempts to synchronize

Requested categories: Product=Office 365 Client, UpdateClassification=Updates

Office 365 Client Management
When Office 365 is initially installed it is possible to instruct the agent to use SCCM for updates.  The install XML can be set as below with the line (OfficeMgmtCOM="True") instructing the management of the client. 

Configuration>
  <Add OfficeClientEdition="32" Channel="Current" OfficeMgmtCOM="True" >
    <Product ID="O365ProPlusRetail">
      <Language ID="en-us" />
    </Product>
  </Add> 
  <Updates Enabled="True"  />
 </Configuration>

Updating Existing Clients:

To change the management and update mechanism there two options available. The necessary settings (OfficeMgmtCOM) can be changed by modifying the registry, GPO, or via Client Policy.  The Office COM interface (OfficeMgmtCOM) will leverage BITS service to download updates from local distribution point.

Registry:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration]
“OfficeMgmtCOM”=”True”
“UpdatesEnabled”=”True”

GPO:
The ADMX/ADML for Office 2016 Administrative Template files include the ability to enable the “Office 365 Client Management”. Once enabled, System Center Configuration Manager can manage the Office 365 client. 



The ADMX/ADML files can be downloaded here https://www.microsoft.com/en-us/download/details.aspx?id=49030  and should be copied to your central store to be accessible from any GPO editor: %logonserver%\sysvol\%Domain.local%\Policies\PolicyDefinitions

Comments

Popular posts from this blog

Windows 7 Offline files will not go Online when connected to network

Issue Several laptop users move between networks, domain, home, etc and when they attempt to access DFS shares explorer status is working offline.  The issue only resolves it self after a reboot. Connecting directly to the share works and i am able to ping network resources.  This behavior occurs for VPN users as well. Possible Causes "slow-link mode". In win7 (with default settings) a client will enter slow-link mode if the latency to the server is above 80ms. In slow-link mode all writes are made to the local cache and a background sync only happens every 6 hours.  Depending on your connection the default slow link detection speed is 64,000 bps On client computers running Windows 7 or Windows Server 2008 R2, a shared folder automatically transitions to the slow-link mode if the round-trip latency of the network is greater than 80 milliseconds, or as configured by the "Configure slow-link mode" policy. After transitioning a folder to the slow-link mode, Offline Fil

SCCM Unknown computer not able to see Task Sequences after installing Current Branch 1702

Soon after installing SCCM CB 1702 we were unable to see Task Sequences deployed to the unknown collection. This issue was identified as a random system taking the GUID of the 'x64 Unknown Computer (x64 Unknown Computer)' record. As a result it was now a known GUID; as we were only deploying Task Sequences to the Unknown collection none were made available. 'x64 Unknown Computer (x64 Unknown Computer)' record 'x86 Unknown Computer (x86 Unknown Computer)' record To get the GUID of your unknown systems open SQL management studio and run the following command: --Sql Command to list the name and GUID for UnknownSystems record data select ItemKey, Name0,SMS_Unique_Identifier0 from UnknownSystem_DISC Using the returned GUID (SMS_Unique_Identifier0) we can find the hostname that has been assigned the 'x64 Unknown Computer (x64 Unknown Computer)' GUID by running the query below. --x64 Unknown Computers select Name0,SMS_Unique_Identifier0,Decommissioned0 from Sys

SCCM Client Certificate (PKI) Value is None

SCCM Client Certificate (PKI) Value is None Symptoms: Are you seeing the following errors logged? ClientIDManagerStartup.log - Error: 0x87d00231 [RegTask] - Client is not registered. Sending registration request for GUID:12345678...98C1AE ... RegTask: Failed to send registration request message. Error: 0x87d00231 ClientIDManagerStartup RegTask: Failed to send registration request. Error: 0x87d00231 ClientIDManagerStartup LocationServices.log Failed to send management point list Location Request Message to SiteServer.Domain.local 1 assigned MP errors in the last 10 minutes, threshold is 5. CcmMessaging.log Status Agent hasn't been initialized yet. Attempting to create pending event. Successfully queued event on HTTP/HTTPS failure for server 'SiteServer.Domain.local'. Post to https://SiteServer.Domain.local/ccm_system_windowsauth/request failed with 0x87d00231. Failed to open to WMI namespace '\\.\root\ccm' (80041003) Failed in WinHtt