diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c6be0c29784542c0548ddb274c98bc2a0de64517..40f52ecb701b4a0cc0edd3491d2f340ad6aed9b0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,4 @@
-image: lofareosc/prefactor-ci:master
+image: lofareosc/prefactor-ci:latest
 
 variables:
   TEST_DATASET_NAME: "L570745_uv_first10.MS.tar.xz"
@@ -56,6 +56,11 @@ blsmooth:
   script:
     - cwltool --no-container --preserve-environment LD_LIBRARY_PATH --preserve-environment PATH --preserve-environment PYTHONPATH steps/blsmooth.cwl test_jobs/blsmooth.json
 
+pol_align:
+  stage: integration_test
+  script:
+    - cwltool --no-container subworkflows/pol_align.cwl test_jobs/pol_align.json
+
 prefactor_calibrator:
   stage: integration_test
   script:
diff --git a/subworkflow/pol_align.cwl b/subworkflow/pol_align.cwl
new file mode 100644
index 0000000000000000000000000000000000000000..91666c3f84f2a439e81d3306ac2784d3e44b5732
--- /dev/null
+++ b/subworkflow/pol_align.cwl
@@ -0,0 +1,71 @@
+class: Workflow
+cwlVersion: v1.0
+id: pol_align
+label: PolAlign
+$namespaces:
+  sbg: 'https://www.sevenbridges.com/'
+  lofar: 'https://git.astron.nl/eosc/ontologies/raw/master/schema/lofar.owl'
+inputs:
+  - id: refAnt
+    type: string?
+    'sbg:x': -451.3746643066406
+    'sbg:y': -493.92510986328125
+  - id: input_h5parm
+    type: File
+    'sbg:x': -743.1871948242188
+    'sbg:y': -316.5615234375
+outputs:
+  - id: output_h5parm
+    outputSource:
+      - losoto_residual/output_h5parm
+    type: File
+    'sbg:x': 152.59103393554688
+    'sbg:y': -289.2899169921875
+steps:
+  - id: losoto_duplicate
+    in:
+      - id: input_h5parm
+        source: input_h5parm
+      - id: soltab
+        default: sol000/phase000
+      - id: soltabOut
+        default: phaseOrig
+    out:
+      - id: output_h5parm
+    run: ../lofar-cwl/steps/LoSoTo.Duplicate.cwl
+    'sbg:x': -423.6229248046875
+    'sbg:y': -287.8958435058594
+  - id: losoto_polalign
+    in:
+      - id: input_h5parm
+        source: losoto_duplicate/output_h5parm
+      - id: soltab
+        default: sol000/phase000
+      - id: soltabout
+        default: polalign
+      - id: average
+        default: true
+      - id: replace
+        default: true
+      - id: refAnt
+        source: refAnt
+    out:
+      - id: output_h5parm
+    run: ../lofar-cwl/steps/LoSoTo.Polalign.cwl
+    'sbg:x': -203.663818359375
+    'sbg:y': -292.61700439453125
+  - id: losoto_residual
+    in:
+      - id: input_h5parm
+        source: losoto_polalign/output_h5parm
+      - id: soltab
+        default: sol000/phase000
+      - id: soltabsToSub
+        default:
+          - polalign
+    out:
+      - id: output_h5parm
+    run: ../lofar-cwl/steps/LoSoTo.Residual.cwl
+    'sbg:x': -0.012040258385241032
+    'sbg:y': -287.7294006347656
+requirements: []
diff --git a/test_jobs/pol_align.json b/test_jobs/pol_align.json
new file mode 100644
index 0000000000000000000000000000000000000000..0cdbed898de539d8a086933afbb8b98b601a80d8
--- /dev/null
+++ b/test_jobs/pol_align.json
@@ -0,0 +1,7 @@
+{
+  "input_h5parm": {
+    "class": "File",
+    "format": "lofar:#H5Parm",
+    "path": "/data/example.h5"
+  }
+}