diff --git a/gso/services/provisioning_proxy.py b/gso/services/provisioning_proxy.py
index 5a22463875b469aa1404fe8e090ba84e879bcd89..0c4dbb1c54dea0ece719eccdc612c9f6e61fa020 100644
--- a/gso/services/provisioning_proxy.py
+++ b/gso/services/provisioning_proxy.py
@@ -14,6 +14,7 @@ from orchestrator.forms import FormPage, ReadOnlyField
 from orchestrator.forms.validators import Accept, Label, LongText
 from orchestrator.types import UUIDstr, State, strEnum
 from orchestrator.utils.json import json_dumps
+from pydantic import validator
 
 from gso import settings
 from gso.products.product_types.device import DeviceProvisioning
@@ -179,6 +180,13 @@ def await_pp_results(subscription: SubscriptionModel,
         pp_run_results: dict = None
         confirm: Accept = Accept('INCOMPLETE')
 
+        @validator('pp_run_results', allow_reuse=True, pre=True, always=True)
+        def run_results_must_be_given(cls, run_results):
+            if run_results is None:
+                raise ValueError('Run results may not be empty. '
+                                 'Wait for the provisioning proxy to finish.')
+            return run_results
+
     result_page = yield ProvisioningResultPage
 
     return result_page.dict()