Fix it now
Microsoft publishes no meaning for 0xC004F047, but it appears during VAMT proxy activation and one of its companions is documented: 0xC004F072 is SL_E_APPLICATION_POLICIES_MISSING, the licence policies for fast query could not be found. Treat this as state that has gone stale on one side or the other, and refresh it. Nothing here costs money.
slmgr /rilc
net stop sppsvc
net start sppsvc
slmgr /dli
- In VAMT, use Refresh product key data online so the tool updates its own view of your keys and what they cover.
- Re-read the affected clients in VAMT so it collects live state rather than what it cached earlier.
- Collect fresh Installation IDs for those clients. A Confirmation ID is only valid against the ID it was issued for.
- Re-run the proxy job for that subset only: Activate, then Proxy activate, then Apply Confirmation ID, apply to selected machine(s) and activate.
If a client was rekeyed since collection, reinstall the key with slmgr /ipk first and collect a fresh Installation ID afterwards, in that order.
If the subset activates, re-run the full job and you are done. If the same clients fail again, the next section covers where the staleness actually sits.
Why it happens
VAMT proxy activation exists for networks with no direct route to Microsoft. The tool reaches each client over WMI, collects its Installation ID, sends the batch from a machine that does have internet access, receives Confirmation IDs back, and writes them onto the clients. That is two machines and a database in the middle, all of which have to agree about the state of each device, and the run stops the moment they do not.
0xC004F047 is not published by Microsoft. Searching Microsoft’s documentation for it returns nothing, so anything that tells you precisely what it means is inferring. What is published is 0xC004F072, which the Software Licensing API documents as SL_E_APPLICATION_POLICIES_MISSING – the licence policies for fast query could not be found. Policy that the licensing service expected to have loaded is not there, and that is a real, documented failure of exactly the kind this article is about.
The client’s half of the state is that policy: licence files and policy data the Software Protection service loaded when the key was installed. It is cached deliberately, because reading it fresh on every operation would be slow. If the installed key, the edition or the build has changed since the cache was built, the cached policy no longer describes the machine VAMT is trying to activate.
VAMT’s half is the product information in its own database, which is populated when you add products and refreshed with Refresh product key data online. 0xC004D702, 0xC004F053 and 0xC004E001 all appear in the same runs and none of them is published either. They respond to the same treatment: refresh both sides rather than reinstalling keys or rebuilding machines.
The client’s policy is stale after a key change
You have this one if The client was rekeyed, moved between key types, or had its edition changed, and VAMT has been working from what it read before that happened.
- Reinstall the system licence files so policy is rebuilt from current state:
slmgr /rilc. - Restart the licensing service:
net stop sppsvcthennet start sppsvc. - Reinstall the product key if it was changed:
slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX. - Re-read the client in VAMT and collect a fresh Installation ID before running proxy activation again.
slmgr /rilc reinstalls the licence files that ship with Windows, from %SystemRoot%\system32\oem and %SystemRoot%\System32\spp\tokens. It does not touch user data or applications.
The clients moved to a newer build after collection
You have this one if The job worked last quarter. Since then a feature update rolled out, and the same clients now fail while newly added ones succeed.
- Let the update finish completely on the affected clients, including any pending restart.
- Re-read the clients in VAMT so it picks up the new build and edition.
- Discard the old Installation IDs and collect fresh ones.
- Run proxy activation again for that group.
Collect and apply within one working session. Installation IDs gathered weeks in advance are the commonest avoidable cause of a failed proxy run.
VAMT’s own product data is out of date
You have this one if Nothing works, including clients that have not changed, and recently added products behave no better than old ones.
- From the VAMT machine, use Refresh product key data online so the tool updates its view of your keys.
- Confirm you are running a current release of the Windows ADK; an older VAMT will not know about newer editions or builds.
- Recreate the database connection if the tool is pointed at a database that predates the current estate.
- Re-run the job against a small group before repeating it at scale.
VAMT cannot reach the client and is showing you cached values
You have this one if The client’s status in VAMT never changes, and a refresh appears to succeed instantly with no network activity.
- Confirm WMI is reachable through the firewall on the client for the network profile in use.
- Confirm the account VAMT runs under has administrative rights on the target.
- For workgroup machines, confirm the registry configuration that allows remote administrative actions under User Account Control is in place.
- Once live reads work, refresh the client and re-run the activation.
The client’s licence store is genuinely damaged
You have this one if One or two clients fail every time regardless of refreshing, and local slmgr commands on those machines also behave oddly.
- Run
slmgr /rilcand restart the Software Protection service. - Run
sfc /scannow, thenDISM /Online /Cleanup-Image /RestoreHealthif it reports repairs. - Reinstall the product key and collect a fresh Installation ID.
- If it still fails, treat that client individually rather than holding up the batch.
Full reference
Where the staleness usually sits
| Pattern | What to refresh |
|---|---|
| Only a handful of clients fail | Those clients’ local licence policy, with slmgr /rilc and a service restart |
| Every client in the job fails | VAMT’s own product data, or the VAMT database |
| Started failing after a feature update | The build changed after the Installation IDs were collected |
| Started failing after a rekey | The Installation ID changed, so the Confirmation ID no longer pairs |
| VAMT cannot read the client at all | Not policy: WMI or remote administration is blocked |
The documented proxy activation run
- Install product keys on the targets if they do not have them, using Install a product key or Install a KMS Client Key.
- In the Products list, select the machines you intend to activate.
- Use Filter in the right-hand pane if you need to narrow by computer name, product name, key type or licence status.
- Choose Activate, then Proxy activate.
- In the Proxy Activate dialog, choose Apply Confirmation ID, apply to selected machine(s) and activate.
- Tick Use Alternate Credentials if the account running VAMT is not an administrator on the targets, then click OK.
VAMT itself needs to be on a machine with internet access, the products need an eligible key installed – MAK, KMS host key or retail – and the account has to have administrative permissions on every target with WMI reachable through the firewall. Where a target is in a workgroup, a registry setting has to allow remote administrative actions under User Account Control. Any one of those missing produces failures that look like policy problems and are not.
Commands, and what they do to local state
| Command | Effect |
|---|---|
slmgr /rilc |
Reinstalls all licence files from %SystemRoot%\system32\oem and %SystemRoot%\System32\spp\tokens, replacing matching licences in the trusted store |
net stop sppsvc / net start sppsvc |
Restarts the Software Protection service so it reloads policy |
slmgr /ipk <key> |
Installs a product key, which regenerates the Installation ID |
slmgr /dti |
Displays the current Installation ID for offline activation |
slmgr /atp <Confirmation ID> |
Activates using a Confirmation ID, without going through the dialog |
slmgr /dli |
Confirms licence status afterwards |
slmgr /xpr |
Confirms the machine is not sitting in a grace window |
slmgr /dti and slmgr /atp are worth knowing even in a VAMT environment. When one machine refuses to cooperate with the batch, they let you complete that single exchange by hand and get on with the rest of the run.
Things not to do to fix this
- Do not delete or rename files in the licensing token store as a first step. It discards the machine’s local licensing state, and every licensed Microsoft product on it then needs activating again.
slmgr /rilcis the supported way to rebuild licence files. - Do not reinstall Windows. Nothing about the installation is damaged in the ordinary case.
- Do not re-key the whole estate. If the key was right yesterday it is right today; what has drifted is the cached state describing it.
- Do not collect Installation IDs in advance of a change window. They are only valid while the machine stays as it was.
Nothing here is a licensing shortfall
None of these codes says anything about your entitlement. Your keys, your seats and your agreement are unaffected, and no purchase makes any of them go away, because nothing about your licensing is wrong. If you are being sold something to resolve a proxy activation failure, it is not the fix.
The one exception worth checking before you start is the remaining activation count on the key itself. VAMT reports it after Refresh product key data online, and a MAK with nothing left produces a different code entirely – 0xC004C020, the Multiple Activation Key having exceeded its limit. That is a real licensing question and a different article.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
0xC004F047 |
Returned during proxy activation. Microsoft publishes no meaning for it; treat it as cached licensing state that no longer matches the machine | not published by the vendor |
0xC004D702 |
Seen in the same runs. No published meaning; respond by refreshing state rather than reinstalling keys | not published by the vendor |
0xC004F072 |
SL_E_APPLICATION_POLICIES_MISSING: the licence policies for fast query could not be found. The one documented code in this group | Microsoft Learn |
0xC004F053 |
Another refusal from the same area of the licensing store. No published meaning | not published by the vendor |
0xC004E001 |
Usually accompanies one of the codes above rather than appearing alone. No published meaning | not published by the vendor |
Confirm the fix worked
- In VAMT, the affected clients report an activated status read live from the machine rather than from the database.
- On one of those clients,
slmgr /dlireports Licence Status: Licensed. slmgr /xpron the same client confirms it is not sitting in a grace window.- The full proxy job completes with no remaining errors when re-run.
- Refresh product key data online shows the remaining activation count falling by the number of machines you activated, and no more.
Questions people ask about this
Do I need to buy anything to clear 0xC004F047?
No. This is a tooling and state problem rather than a shortfall in entitlement. Your keys, seats and agreement are unaffected, and no purchase will make the error go away because nothing about your licensing is wrong.
How long is an Installation ID good for?
Treat it as valid only while the client stays exactly as it was when you collected it. A rekey, an edition change, a feature update or significant hardware changes all produce a new Installation ID and invalidate any Confirmation ID issued against the old one.
Can I run proxy activation without VAMT?
For a few machines, yes. slmgr /dti reads the Installation ID and slmgr /atp <Confirmation ID> completes the activation, so you can do the exchange by hand. That is the manual work VAMT exists to remove, and it scales badly past a handful of devices.
Why does the same job succeed on some clients and fail on others?
Because staleness is per client. The ones that fail are those whose local state moved since VAMT last looked at them, which is why re-reading that subset and collecting fresh IDs usually clears the run.
Is 0xC004F072 the same as 0xC004F047?
Not the same code, but the one that tells you most. Microsoft documents 0xC004F072 as the licence policies for fast query being missing, which is precisely the condition this whole class of failure describes. 0xC004F047 has no published meaning, so 0xC004F072 is the better anchor for what to do.
