UR6 for SCOM 2019 – Step by Step
KB Article for OpsMgr
Download Update Rollup from the Catalog
Download the NEW Simplified Management Server Update EXE
Download Updated UNIX/Linux Management Packs
Recommended hotfix page
Key fixes:
- Fixed an issue which reported High CPU in MOMPerfSnapshotHelper due to shutdown in aspnet_perf.dll by TerminateProcess instead of normal return.
- Fixed 13 Reports displaying GB (Chinese) characters incorrectly.
- Fixed GB characters from GB18030-2022 version which were not displaying in Alert Description field on Create Monitor/rule Wizard.
- Addressed multiple security vulnerabilities and enhancements w.r.t Linux agent.
- Added support for compiler-mitigated Linux Agent.
- Disabled HTTP tracing to mitigate potential misuse.
- Added support for new Linux distributions including Alma 9, Rocky 9, and Debian 12.
- Resolved an issue with Apache MP where the Apache product version was not correctly returned on SLES 15/OpenSUSE 15.
- Addressed Linux agent installation problems when SeLinux is disabled on the agent machine.
- Fixed Linux agent installation issues on Solaris 10X86 caused by outdated references to OpenSSL.
- Resolved a query failure issue due to the filter size exceeding 64 symbols.
- Fixed leap day issues identified by CodeQL analysis.
- Resolved a memory leak problem in the Linux agent, which previously led to unresponsiveness.
- Fixed an issue causing OMIAgent to use 100% CPU.
- Addressed a problem where timeouts were not functioning correctly when the elevation type was set to Sudo.
- Fixed the problem of extended OMI uninstallation.
- All the issues that were fixed in earlier hotfixes for SCOM 2019 are also included in SCOM 2019 UR6.
NOTE: I get this question every time we release an update rollup: ALL SCOM Update Rollups are CUMULATIVE. This means you do not need to apply them in order, you can always just apply the latest update. If you have deployed SCOM 2019 and never applied an update rollup – you can go straight to the latest one available.
Let’s get started
From reading the KB article – the order of operations is:
- Install the update rollup package on the following server infrastructure:
- Management Servers
- Audit Collection Servers
- Web Console Servers
- Gateway Servers
- Operations Console Servers
- Reporting Server
- Apply Agent Updates
- Update Unix/Linux MP’s and Agents
Management Servers
Updates in SCOM 2019 have CHANGED. There is a new process for updating management servers that differs from previous versions of SCOM. Download the single file management server update, and this will ensure that your Management Server Role is updated, as well as any SQL updates, and Management Pack updates.
- Download: HERE
It doesn’t matter which management server I start with. I simply make sure I only patch one management server at a time to allow for agent failover without overloading any single management server.
I have multiple management servers My first two management servers hold 3 roles, and each must be patched: Management Server, Web Console, and Console.
The first thing I do when I download the updates from the catalog, is copy the cab files for my language to a single location, and then extract the contents.
Notice the new EXE file, and a MSP file exist for the Server update. The EXE is the new simplified update file, but we included the older MSP for customers who want to continue to use the old process, or use silent installs for patching. I will ONLY demonstrate and recommend the EXE file for the Management Server role update.
Once I have the EXE and MSP files, I am ready to start applying the update to each server by role.
- ***Note: One of the changes in SCOM 2019 Update Rollups, is that you no longer need to have “Sysadmin” role level rights to SQL. The SCOM Update Rollup simply updates SCOM, and then uses your existing RunAs accounts to deploy the updated SQL script files to modify the SQL databases. You simply need to log into your SCOM management servers as a Local Administrator and SCOM Admin.
My first server is a Management Server, Web Console server, and has the SCOM console installed, so I copy those update files locally, and execute them per the KB, from an elevated command prompt.
I will start with KB5035285-AMD64-Server.exe
This is a self-extracting executable, that kicks off a simple update tool. Accept the license terms, and click “Install”
This will update the management server role, update the databases with SQL scripts, and then import any Management Pack updates.
NOTE: In my case, my SCOM Management server IMMEDIATELY rebooted without pause or prompt.
If you have an issue – you can review the setup logs:
- Setup Log: C:\Users\<UserName>\Appdata\Local\SCOM\Logs
- Patch log: C:\Users\<UserName>\Appdata\Local\Temp
- SQL Logs: <SCOM install directory>\Server\SQL Script for Update Rollups\SqlExceptions_{version}.log
- MP Import Logs: <SCOM install directory>\Server\Management Packs for Update Rollups\ManualMPImport_{version}.log
Web Console Update – since this management server also runs a SCOM Web Console, I will run: KB5035285-AMD64-WebConsole.msp
Console Update – (make sure your console is closed): KB5035285-AMD64-Console.msp
You can reboot the server at this time if you were prompted to in order to complete the update. If you were not prompted to, you do not need to.
Additional Management Servers:
Apply the UR updates for Server, Web Console, and Console roles as needed for all additional management servers. You should only patch one management server at a time to allow for graceful failover of agents and to keep resource pools stable.
You can use the same EXE file and MSP files (where applicable) you used for the first management server. The setup program will detect if the SQL scripts are already completed, and if the MP’s are already imported, and skip those if they are not needed.
ACS Update: (Audit Collection Services)
One of my management servers is also my ACS Audit Collection Server role. I will apply the update for that: KB5035285-AMD64-ACS.msp
Updating Gateways:
Open an elevated command prompt, and run the update: KB5035285-AMD64-Gateway.msp
The update launches a UI and quickly finishes.
Updating Reporting:
On your server that hosts the SCOM Reporting role, run the update: KB5035285-AMD64-Reporting.msp
Note: This prompted for a reboot on my reporting server, so plan accordingly.
Update Agents:
Agents should be placed into pending actions by this update for any agent that was not manually installed (remotely manageable = yes):
***NOTE: For this to work, you MUST run the server update from an elevated command prompt, and the user account running the update must be a Local Admin, and SCOM Admin. The Agents MUST have “Remotely Manageable” set to “Yes”.
You can approve these – which will result in a success or failure message once complete:
Now we will show the “REAL” agent number in the Administration –> Agent Managed view console:
And my SCOM Management Group Management MP, which will help show you REAL UR levels based on a better discovery. This has long been a pain point in SCOM:
https://kevinholman.com/2017/05/09/scom-management-mp-making-a-scom-admins-life-a-little-easier/
Update UNIX/Linux MPs and Agents:
You can get the current Unix/Linux MP updates HERE.
Download, extract, and import ONLY the updated Linux/UNIX MP’s that are relevant to the OS versions that you want to monitor. Here is the FULL list:
In my environment – I only monitor RedHat and Universal Linux distributions, so this is my pared down list of MP’s to update. Yours may vary, depending on what previous versions you are upgrading from:
These can take a considerable amount of time to import, and consume a lot of CPU on the management servers and SQL server until complete.
Once it has completed, and before you attempt to update your Linux Agents – verify the updated files are dropped at \Program Files\Microsoft System Center\Operations Manager\Server\AgentManagement\UnixAgents\DownloadedKits. If they are not present or not updated after import, sometimes you must restart the Microsoft Monitoring Agent service on the management servers after an MP Import to get them to show up.
After restarting my Microsoft Monitoring Agent service on my management server, I see the new files dropped with new timestamps:
Now you can deploy the Linux agent updates:
If you have any issues, make sure your SUDOERS file has the correct information pertaining to agent upgrade:
Update the remaining deployed consoles
This is an important step. I have consoles deployed around my infrastructure – on my Orchestrator server, SCVMM server, on my personal workstation, on all the other SCOM admins on my team, on a Terminal Server we use as a tools machine, etc. These should all get the matching update version.
Verifying the update
There are new views in the SCOM console to help with this and make this process MUCH easier. You do need to wait long enough for the discoveries to run in order for these to update the views.
Review:
Now at this point, we would check the OpsMgr event logs on our management servers, review the Management Group Health dashboard, check for any new or strange alerts coming in, and ensure that there are no issues after the update.
Known Issues:
1. There is a POST UR6 Hotfix to support support crypto policies in FIPS mode for monitoring Linux Workloads (KB 5037360)
- You should review if this is applicable to your monitoring environment:
- System Center Operations Manager 2019 and 2022 now support crypto policies in FIPS mode for monitoring Linux Workloads (KB 5037360) – Microsoft Support
2. Health Explorer and other web console features that use popups no longer work.
- Make a backup copy of \Program Files\Microsoft System Center\Operations Manager\WebConsole\Dashboard\main.js
- Edit main.js (using notepad is fine).
- Search for the string “sandbox” and on the THIRD hit, edit the string immediately after the third “sandbox” adding: allow-popups allow-forms
- See image example below:
- Save the file, then clear the browser cache AND restart IIS service (iisreset).
3. The new OperationsManager DB free space script requires additional permissions.
- This script was recently updated from VBS to PowerShell, and some additional instance level permissions are required for the SQL server hosting the OperationsManager database
- If you are missing these permissions, you will see the following event on one of your management servers:
- Log Name: Operations Manager
Source: Health Service Script
Event ID: 100
Level: Warning
Description:
GetOpsMgrDBPercentFreeSpace.ps1 : Exception calling “Fill” with “1” argument(s): “VIEW SERVER STATE permission
was denied on object ‘server’, database ‘master’.
The user does not have permission to perform this action.
VIEW SERVER STATE permission was denied on object ‘server’, database ‘master’.
The user does not have permission to perform this action.
VIEW SERVER STATE permission was denied on object ‘server’, database ‘master’.
The user does not have permission to perform this action.
VIEW SERVER STATE permission was denied on object ‘server’, database ‘master’.
The user does not have permission to perform this action.”
At line:234 char:5
+ $adp.Fill($dt) | out-null
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SqlException - To resolve this, you must grant the “VIEW ANY DEFINITION” and “VIEW SERVER STATE” SQL instance level permission to the Management Server Action account SQL login on the SQL instance hosting the OperationsManager database. If you use AlwaysOn, make sure you set this permission all replica servers.
- Open the login properties, select “Securables”, and add “View any definition” and “View server state” permissions:
4. You MUST check for duplicate aliases before applying UR6 to SCOM 2019 UR3 or previous versions. If you have any MP’s with duplicate aliases the SDK will throw errors after the upgrade
- In previous versions of SCOM, duplicate aliases (with different case) was allowed. This is no longer allowed starting with SCOM 2019 UR4. Please run the PowerShell or SQL scripts below to check for this condition and resolve this if you are upgrading from SCOM 2019 UR3 or previous.
- If impacted, your SCOM console might be stuck while “connecting”.
- SDK PowerShell commands might return an error with “An object of class ManagementPackClass with ID <GUID> was not found”
- Event 27000 In the OpsManager event log : “ An Item with the same key has already been added”
- Failed setup/upgrade installation with messages in the log:” An Item with the same key has already been added”
Example of a bad MP:
To detect MPs with this issue, you can use the following PowerShell or SQL query. After detection, you will need to export these MP’s and re-label one of the duplicate Aliases, and re-label it anywhere it was used in the body of the XML.
############################################ #Identify MPs imported with duplicate Aliases $mps = Get-SCOMManagementPack foreach ($mp in $mps) { $hashTable = @{} foreach ($ref in $mp.References) { try {$hashTable.Add($ref.Key, $ref.Value)} catch { $MPName = $mp.Name $MPDisplayName = $mp.DisplayName $MPVersion = $mp.Version "MP contains duplicate aliases: Name=($MPName) DiplayName=($MPDisplayName) Version=($MPVersion)" } } } ############################################
SQL query:
-- LIST ALL MPs that have a duplicate Alias reference declare @mpFriendlyName nvarchar(255), @mpName nvarchar(255), @mpId uniqueidentifier, @mpXml as xml create table #badMPTable ( mpId uniqueidentifier, mpName nvarchar(255), mpFriendlyName nvarchar(255) ) declare mp_cursor cursor local forward_only read_only for select MPFriendlyName, MPName, ManagementPackId, convert(xml, MPXML) from ManagementPack open mp_cursor fetch next from mp_cursor into @mpFriendlyName, @mpName, @mpId, @mpXml while @@FETCH_STATUS = 0 begin select n.value('@Alias','nvarchar(255)') as mpRef into #tempRefs from @mpXml.nodes('/ManagementPack/Manifest/References/Reference') as a(n) if exists( select count(*) from #tempRefs group by mpRef having count(*) > 1 ) begin insert into #badMPTable ( mpId, mpName, mpFriendlyName ) values ( @mpId, @mpName, @mpFriendlyName ) end drop table #tempRefs fetch next from mp_cursor into @mpFriendlyName, @mpName, @mpId, @mpXml end close mp_cursor deallocate mp_cursor select * from #badMPTable drop table #badMPTable --End
5. Once you apply an update rollup, you cannot install, or re-install SCOM WEB CONSOLE, or SCOM REPORTING roles.
- You will see an error in the setup UI (when you supply a management server name) that states “Unable to connect to the Data Access service for this management server. Ensure the Data Access service is running and that the service, the management group, and setup are all the same version.”
- In the setup log, located at C:\Users\<username>\AppData\Local\SCOM\LOGS\OpsMgrSetupWizard.log – the last line will appear similar to: Error:The management server is a different version than the current setup build. Please use a different management server or the correct version of setup. Server Version: 10.19.10505.0
- SCOM Reporting Setup looks for a very specific value in the SQL database, which has been updated by the Update Rollup and setup is now blocked.
- Apply the following workaround to install/reinstall SCOM WebConsole or Reporting role:
- QUERY the OPERATIONSMANAGER database, and record the VERSION number that is returned. You will need this value later. You need to change the PrincipalName to your SCOM Management server that you point the reporting install to.
-- 10.19.10050.0 - 2019 RTM -- 10.19.10311.0 - 2019 UR1 -- 10.19.10349.0 - 2019 UR1 with post UR1 Hotfix -- 10.19.10407.0 - 2019 UR2 -- 10.19.10505.0 – 2019 UR3 -- 10.19.10569.0 – 2019 UR4 -- 10.19.10606.0 – 2019 UR5 -- 10.19.10649.0 – 2019 UR6 USE OperationsManager SELECT PrincipalName, Version FROM MTV_HealthService WHERE IsManagementServer = 1 AND PrincipalName = 'OMMS1.opsmgr.net'
UPDATE the VERSION entry in the OpsDB to match the RTM version number which is 10.19.10050.0 just for this management server.
UPDATE MTV_HealthService SET Version = '10.19.10050.0' -- 2019 RTM WHERE PrincipalName = 'OMMS1.opsmgr.net'
Install SCOM 2019 Reporting, and choose this same Management Server. Reporting install will work now.
REVERT the VERSION entry in the OpsDB to match the original value you recorded
UPDATE MTV_HealthService SET Version = '10.19.10649.0' -- 2019 UR6 WHERE PrincipalName = 'OMMS1.opsmgr.net'
6. When you run the Server update, sometimes the tasks fail to update the SQL databases, or perform the Agent Pending Management task.
This can happen when your permissions are not set correctly for your RunAs accounts. There are 3 tasks that get deployed from the Management Pack included in the Update Rollup:
MP: Microsoft.SystemCenter.DBUpdateTask
- Database update task
- Datawarehouse update task
- Agent pending management task
The “Database update task” runs as whatever action account is associated with the RunAs Profile: “Operational Database Account”. By default there are no RunAs accounts associated with this profile, so any workflow that attempts to use this RunAs profile while it is unassociated will execute as the Management Server Action Account. Since the MSAA has a high level of privilege to the OperationsManager database, this will be successful. It will fail if someone has restricted the rights of this account on the management server or the SQL database/instance.
The “Datawarehouse update task” runs as whatever action account is associated with the RunAs Profile: “Data Warehouse Account”. By default the RunAs account “Data Warehouse Action Account” is associated with this profile, so the task will execute as the credential configured in the “Data Warehouse Action Account” RunAs account, which should be the Data Warehouse Write Action account you specified when you installed SCOM. This credential has a very high privilege to the OperationsManagerDW database (db_owner) so it can modify anything necessary. It will fail if someone has restricted the rights of this account on the management server or the SQL database/instance.
The “Agent pending management task” runs as whatever action account is associated with the RunAs Profile: “Operational Database Account”. By default there are no RunAs accounts associated with this profile, so any workflow that attempts to use this RunAs profile while it is unassociated will execute as the Management Server Action Account. Since the MSAA has a high level of privilege to the OperationsManager database, this will be successful. It will fail if someone has restricted the rights of this account on the management server or the SQL database/instance.
If any of these fail, it is likely that someone has modified the default permissions for your action accounts to the SQL databases, or someone has incorrectly modified the default RunAs profile associations. Please review your permissions against: SCOM 2019 Security Account Matrix – Kevin Holman’s Blog
You can always just run the SQL script update tasks manually, by using the method shown in previous versions of SCOM as seen here: UR10 for SCOM 2016 – Step by Step – Kevin Holman’s Blog
Done!
As always, this is an excellent and easy-to-follow write-up.
Any ideas on why the DataWarehouse update task might timeout or where to look on what the problem might be? Account permissions look good, no firewall issues.
I looked at the UR1 installation instructions and I saw your reply about logs:
Setup Log: C:\Users\\Appdata\Local\SCOM\Logs
SQL Logs: \Server\SQL Script for Update Rollups\SqlExceptions_{version}.log
MP Import Logs: \Server\Management Packs for Update Rollups\ManualMPImport_{version}.log
I looked for the SQL logs on the server, didn’t see anything.
Hm, looks like SQL Broker isn’t enabled on the OM DB (is_broker_enabled) and someone else had this issue https://www.linkedin.com/pulse/what-i-learned-upgrading-scom-dimitri-luinetti/
Hi, after upgrading to UR6 we are constantly setting event IDs 29120 and 29121 in the event log. This is the detail of 29120:
OpsMgr Management Configuration Service failed to process configuration request (Xml configuration file or management pack request) due to the following exception
Microsoft.EnterpriseManagement.ManagementConfiguration.DataAccessLayer.DataAccessException: Data access operation failed
at Microsoft.EnterpriseManagement.ManagementConfiguration.DataAccessLayer.DataAccessOperation.ExecuteSynchronously(Int32 timeoutSeconds, WaitHandle stopWaitHandle)
at Microsoft.EnterpriseManagement.ManagementConfiguration.CmdbOperations.CmdbDataProvider.GetManagementPack(Guid managementPackVersionDependentId)
at Microsoft.EnterpriseManagement.ManagementConfiguration.Engine.TracingConfigurationDataProvider.GetManagementPack(Guid managementPackVersionDependentId)
at Microsoft.EnterpriseManagement.ManagementConfiguration.Engine.AgentRequestProcessor.ProcessManagementPackRequest(ManagementPackRequestDescriptor requestDescriptor)
at Microsoft.EnterpriseManagement.ManagementConfiguration.Engine.AgentRequestProcessor.Execute()
at Microsoft.EnterpriseManagement.ManagementConfiguration.Engine.ThreadManager.ResponseThreadStart(Object state)
———————————–
System.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. —> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
at System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync()
at System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket()
at System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer()
at System.Data.SqlClient.TdsParserStateObject.TryReadUInt32(UInt32& value)
at System.Data.SqlClient.TdsParserStateObject.TryReadPlpLength(Boolean returnPlpNullIfNull, UInt64& lengthLeft)
at System.Data.SqlClient.TdsParser.TrySkipPlpValue(UInt64 cb, TdsParserStateObject stateObj, UInt64& totalBytesSkipped)
at System.Data.SqlClient.SqlDataReader.TryResetBlobState()
at System.Data.SqlClient.SqlDataReader.TryCleanPartialRead()
at System.Data.SqlClient.SqlDataReader.TryCloseInternal(Boolean closeReader)
at System.Data.SqlClient.SqlDataReader.Close()
at Microsoft.EnterpriseManagement.ManagementConfiguration.DataAccessLayer.ReaderSqlCommandOperation.SqlCommandCompleted(IAsyncResult asyncResult)
ClientConnectionId:a0eebb5d-2c84-4b1e-8c15-d571968aabb3
We upgraded from UR5, I’ve checked 2, 3, and 4 above and all is fine. Have tried multiple restarts of the management servers and the Ops Manager database but no joy.
RE: Health Explorer and other web console features that use popups no longer work
The word sandbox did not appear in main.js three times for me, only twice.
I added allow-popups allow-forms after the second – but this did not fix the popups me. I then added it after the first sandbox and that did resolve the issue for me, Health Explorer opened in a new web browser tab.
do you notice unix agents certificate issue post agent upgrade. i see Cert is new and not signed by scom. old signed cert is overwritten
After importing the new Linux management pack, I can upgrade my Redhat 7 agents from version 1.7 to version 1.9, but not the Redhat 8 agents. Any suggestions?
Thanks for the easy guide to upgrade the SCOM 2019 to UR6. I performed all the steps successfully, however, while installing the agent KB5035285-AMD64-Agent I got the below error pop-up:
“The upgrade patch cannot be installed by the Windows Installer Service because the program to be upgraded may be missing, or the upgrade patch may update a different version of the program. Verify that the program to be upgraded exists on your computer and that you have the correct upgrade patch”.
Note: I’m upgrading UR 3 Patch.
Please assist to resolve this issue.
What about UR6 hotfix. What we should install first UR6 (KB5035285) or immediately Update Rollup 6 Hotfix (KB5037360) – it contain UR6 installation?