Skip to content

Commit d46c23f

Browse files
committed
AB#7287: Windows Upgrade Fails with Error 0x80070003 During “Process Drivers for Migration”
New article for [CI 7287](https://dev.azure.com/KMOps/ContentExperience/_queries/edit/7287/?queryId=24176c8b-faba-4fe9-858a-a9fa0da3325a)
1 parent 129c730 commit d46c23f

File tree

1 file changed

+132
-0
lines changed

1 file changed

+132
-0
lines changed
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
---
2+
title: Windows Upgrade fails and generates error 0x80070003 during "Process Drivers for Migration" operation
3+
description: Describes how to resolve issues that produce 0x80070003 during the "Process Drivers for Migration" operation of an in-place upgrade of Windows or Windows Server.
4+
ms.date: 09/26/2025
5+
manager: dcscontentpm
6+
audience: itpro
7+
ms.topic: troubleshooting
8+
ms.reviewer: kaushika, v-appelgatet
9+
ms.custom:
10+
- sap:windows setup, upgrade and deployment\installing or upgrading windows
11+
- pcy:WinComm Devices Deploy
12+
---
13+
# Windows Upgrade fails and generates error 0x80070003 during "Process Drivers for Migration" operation
14+
15+
*Applies to*: Windows Server 2025, Windows Server 2022, Windows 11
16+
17+
This article describes how to resolve issues that produce 0x80070003 during the "Process Drivers for Migration" operation of an in-place upgrade of Windows or Windows Server.
18+
19+
## Symptoms
20+
21+
When you try to upgrade a Windows Server or Windows Client computer to a newer version of Windows (an *in-place upgrade*) the upgrade fails. The upgrade process generates error 0x80070003.
22+
23+
## Cause
24+
25+
The contents of a servicing stack folder in the WinSxS system folder are missing or damaged. Without the information in this folder, DISM and the upgrade engine can't migrate drivers. The upgrade fails, generating error 0x80070003.
26+
27+
## Resolution
28+
29+
> [!IMPORTANT]
30+
> Before you perform any upgrade operation, back up your system.
31+
32+
### Step 1: Confirm the issue
33+
34+
To gather additional information about the issue, examine the following logs. You can use a text editor such as Notepad or Notepad++ to view the log files. Use the **Find** command (CTRL+F) to search for specific strings as noted. The following tables describe the most useful log files, and in each file, the strings that might provide more information about the error.
35+
36+
| Log files | Location | Description |
37+
| - | - | - |
38+
| SetupAct.log | C:\$WINDOWS.~BT\Sources\Panther | This log records setup activity during the early phase of the upgrade process. |
39+
| Upgrade engine (MOUPG) logs<br />such as the following files:<ul><li>setuperr.log</li><li>setupdiagresults.xml</li><li>Other logs whose file names begin with "MOSetup" or "MOU."</li></ul> | C:\$WINDOWS.~BT\Sources\Panther | These logs show high-level upgrade decisions and phase transitions. |
40+
| DISM.log | C:\Windows\Logs\DISM | This log provides details when DISM (Deployment Image Servicing and Management) commands fail. |
41+
| CBS.log (Component-Based Servicing log) | C:\Windows\Logs\CBS | Windows uses CBS logs to track servicing operations, such as updates and upgrades. This file might be large enough that it would be easier to manage by using Notepad ++ than by using Notepad. |
42+
43+
| Log files | Strings to search for |
44+
| - | - |
45+
| SetupAct.log | "0x80070003"<br />or text that resembles the following strings:<ul><li>"Failed to open new session: (DISM_{GUID})"</li><li>"Operation failed: Process Drivers for Migration. Error: 0x80070003"</li></ul> |
46+
| MOUPG logs | Text that resembles the following strings:<ul><li>"MoSetupPlatform: Using action error code: [0x80070003]"</li><li>"CDlpActionDriverMigrate::ExecuteRoutine: Result = 0x80070003"</li><li>"Setup phase change: \[SetupPhaseInstall] -> \[SetupPhaseError]"</li></ul> |
47+
| DISM.log | "0x80070003"<br />or text that resembles "Failed to bind the online servicing stack - CDISMOSServiceManager::get_ServicingStackDirectory(hr:0x80070003)" |
48+
| CBS.log | "Failed to create worker session"<br />or repeated strings that mention servicing failures |
49+
50+
Additionally, you can manually check for a damaged servicing stack folder. In the C:\Windows\WinSxS folder, look for at least one folder that has name that includes the string "serviceingstack." For example, you might find folders that have names that resemble the following strings:
51+
52+
- amd64_microsoft-windows-servicingstack_31bf3856ad364e35_10.0.26100.5074_none_a5532eb7772ad4c4
53+
- amd64_microsoft-windows-servicingstack-inetsrv_31bf3856ad364e35_10.0.26100.5074_none_d120fd2616d820ec
54+
- amd64_microsoft-windows-servicingstack-onecore_31bf3856ad364e35_10.0.26100.5074_none_da44c3c8cf2df25a
55+
- x86_microsoft-windows-servicingstack_31bf3856ad364e35_10.0.26100.5074_none_49349333becd638e
56+
- x86_microsoft-windows-servicingstack-inetsrv_31bf3856ad364e35_10.0.26100.5074_none_750261a25e7aafb6
57+
- x86_microsoft-windows-servicingstack-onecore_31bf3856ad364e35_10.0.26100.5074_none_7e26284516d08124
58+
59+
Such folders shouldn't be empty.
60+
61+
### Step 2: Download and extract files from the latest SSU
62+
63+
1. On the affected computer, open an administrative Command Prompt window, and then run the following command:
64+
65+
```console
66+
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Version"
67+
```
68+
69+
This information confirms the current version of the servicing stack on the computer.
70+
71+
1. On the affected computer, create a temporary folder (as an example for this procedure, we'll use C:\TemporaryFolder).
72+
73+
1. Download the latest Servicing Stack Update (SSU) for your Windows version from [Servicing Stack Updates (SSU): Frequently Asked Questions](https://support.microsoft.com/topic/servicing-stack-updates-ssu-frequently-asked-questions-06b62771-1cb0-368c-09cf-87c4efc4f2fe).
74+
75+
1. Extract the update files from the .msu package to the temporary folder. For example, run the following command at the command prompt:
76+
77+
```console
78+
expand -F:* C:\<Path>\update.msu C:\TemporaryFolder
79+
```
80+
81+
> [!NOTE]
82+
> In this command, \<Path> represents the path to the .msu package.
83+
84+
### Step 3: Replace the corrupted files
85+
86+
> [!Caution]
87+
>
88+
> - Do not take ownership of the WinSxS folder or its subfolders, and do not change the folder permissions.
89+
> - This procedure uses the `robocopy /B` command to replace the servicing stack folders in the WinSxS folder with servicing stack folders from the downloaded SSU. `Robocopy /B` preserves the file and folder permissions.
90+
91+
1. Open an administrative PowerShell window. To define a set of variables for the robocopy operation, run the following commands, in sequence.
92+
93+
```powershell
94+
$src = "C:\TemporaryFolder"
95+
$dst = "C:\Windows\WinSxS"
96+
$log = "C:\Repair\WinSxS_Repair.log"
97+
98+
New-Item -ItemType Directory -Force -Path (Split-Path $log) | Out-Null
99+
```
100+
101+
> [!NOTE]
102+
> These commands continue to use the C:\TemporaryFolder folder that was introduced in the previous section, and also introduces a C:\Repair folder to store a log file.
103+
104+
1. If you want to see a list of the items without actually copying them, run the following command:
105+
106+
```powershell
107+
Get-ChildItem -Path $src -Directory -Force | ForEach-Object {
108+
& robocopy $_.FullName $dst /E /COPYALL /B /R:0 /W:0 /L /NFL /NDL /NP /NJH /NJS
109+
}
110+
```
111+
112+
> [!NOTE]
113+
>
114+
> - The `Get-ChildItem -Directory` cmdlet selects only subfolders, so the robocopy operation skips root-level files such as .mum and .manifest files.
115+
> - For more information about the `Get-ChildItem` cmdlet and its options, see [Get-ChildItem](/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-7.5).
116+
> - For more information about the `robocopy` command and its switches, see [robocopy](/windows-server/administration/windows-commands/robocopy).
117+
118+
1. To copy the subfolders and log the operation, run the following command:
119+
120+
```powershell
121+
Get-ChildItem -Path $src -Directory -Force | ForEach-Object {
122+
& robocopy $_.FullName $dst /E /COPYALL /B /R:0 /W:0 /LOG+:$log
123+
}
124+
```
125+
126+
As an alternative to the previous steps, you can run the following command at an administrative command prompt:
127+
128+
```console
129+
for /d %i in (C:\TemporaryFolder\*) do robocopy "%i" "C:\Windows\WinSxS" /E /COPYALL /B /R:0 /W:0
130+
```
131+
132+
1. After you finish copying the SSU files, try to upgrade Windows again.

0 commit comments

Comments
 (0)