diff --git i/sdk/cwl/arvados_cwl/arvcontainer.py w/sdk/cwl/arvados_cwl/arvcontainer.py
index d01623ef7b..92b9c593ae 100644
--- i/sdk/cwl/arvados_cwl/arvcontainer.py
+++ w/sdk/cwl/arvados_cwl/arvcontainer.py
@@ -397,9 +397,10 @@ class ArvadosContainer(JobBase):
         output_properties_req, _ = self.get_requirement("http://arvados.org/cwl#OutputCollectionProperties")
         if output_properties_req:
             if self.arvrunner.api._rootDesc["revision"] >= "20220510":
-                container_request["output_properties"] = {}
-                for pr in output_properties_req["outputProperties"]:
-                    container_request["output_properties"][pr["propertyName"]] = self.builder.do_eval(pr["propertyValue"])
+                container_request["output_properties"] = {
+                    key: self.builder.do_eval(val)
+                    for key, val in output_properties_req["outputProperties"].items()
+                }
             else:
                 logger.warning("%s API revision is %s, revision %s is required to support setting properties on output collections.",
                                self.arvrunner.label(self), self.arvrunner.api._rootDesc["revision"], "20220510")
diff --git i/sdk/cwl/setup.py w/sdk/cwl/setup.py
index c846706db3..7f68c97eea 100644
--- i/sdk/cwl/setup.py
+++ w/sdk/cwl/setup.py
@@ -14,8 +14,8 @@ setuptools.setup(
     cmdclass=arvados_version['CMDCLASS'],
     install_requires=[
         *arv_mod.iter_dependencies(version=version),
-        'cwltool == 3.1.20240508115724',
-        'schema-salad == 8.5.20240503091721',
+        'cwltool == 3.1.20250715140722',
+        'schema-salad == 8.9.20250408123006',
         'ciso8601 >= 2.0.0',
     ],
     version=version,
