diff --git a/src/xfel_calibrate/calibrate.py b/src/xfel_calibrate/calibrate.py
index 159891a39c913cb8689d9394e9292b0edfd6563a..f6a762b44de0cd79f5a17b8ffa489c0f6f596b74 100755
--- a/src/xfel_calibrate/calibrate.py
+++ b/src/xfel_calibrate/calibrate.py
@@ -23,6 +23,7 @@ import nbformat
 import numpy as np
 from jinja2 import Template
 from nbparameterise import extract_parameters, parameter_values, replace_definitions
+import yaml
 
 import cal_tools.tools
 
@@ -86,6 +87,11 @@ def make_initial_parser(**kwargs):
                         help='Name of concurrency parameter.'
                               'If not given, it is taken from configuration.')
 
+    parser.add_argument('--constants-from', type=str, help=(
+        "Path to a calibration-metadata.yml file. If given, "
+        "retrieved-constants will be copied to use for a new correction."
+    ))
+
     parser.add_argument('--priority', type=int, default=2,
                         help="Priority of batch jobs. If priority<=1, reserved"
                              " nodes become available.")
@@ -1073,6 +1079,10 @@ def run():
         'path': python_exe,
         'python-version': get_python_version(python_exe),
     }
+    if args["constants_from"]:
+        with open(args["constants_from"], "r", encoding='utf-8') as f:
+            d = yaml.safe_load(f)
+        metadata["retrieved-constants"] = d["retrieved-constants"]
     metadata.save()
 
     # Record installed Python packages for reproducing the environment