diff --git a/shared/workspaces/alembic/versions/4c3bfbdd2984_add_vlass_image_caching_workflow.py b/shared/workspaces/alembic/versions/4c3bfbdd2984_add_vlass_image_caching_workflow.py
new file mode 100644
index 0000000000000000000000000000000000000000..d5433f758eee51cd37f6bd7657da4b3359f5d2ac
--- /dev/null
+++ b/shared/workspaces/alembic/versions/4c3bfbdd2984_add_vlass_image_caching_workflow.py
@@ -0,0 +1,83 @@
+"""Add VLASS image caching workflow
+
+Revision ID: 4c3bfbdd2984
+Revises: c5b3f866d904
+Create Date: 2022-10-05 10:33:48.765845
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '4c3bfbdd2984'
+down_revision = 'c5b3f866d904'
+branch_labels = None
+depends_on = None
+
+vlass_image_caching_condor = """executable = vlass_image_caching.sh
+arguments = {{calibration_name}} {{phase_center}} {{vlass_relative_path}} {{qa_status}}
+
+output = image_caching.out
+error = image_caching.err
+log = condor.log
+
+PIMS_PATH = /lustre/aoc/cluster/pipeline/vlass_{{vlass_env}}/workspaces/bin
+VLASS_DIR = {{data_location}}
+should_transfer_files = yes
+transfer_input_files = $ENV(HOME)/.ssh/condor_transfer, nraorsync://$(SBIN_PATH)/pycapo, nraorsync://$(PIMS_PATH)/pimscache, nraorsync://$(PIMS_PATH)/cacheImagingProducts.sh
+when_to_transfer_output = ON_EXIT
+transfer_output_files = .job.ad
+output_destination = nraorsync://$(VLASS_DIR)
++WantIOProxy = True
+
+environment = "CAPO_PATH=/home/casa/capo"
+requirements = (VLASS == True) && (HasLustre == True)
++partition = "VLASS"
+
+queue
+
+"""
+
+vlass_image_caching_sh = """#!/bin/sh
+set -o errexit
+
+./pimscache -rm -c $1 -p $2
+
+./cacheImagingProducts.sh -p $3 -s $4
+"""
+
+def upgrade():
+    op.execute(
+        """
+        INSERT INTO workflows (workflow_name) VALUES ('vlass_image_caching')
+        """
+    )
+
+    op.execute(
+        f"""
+        INSERT INTO workflow_templates (filename, content, workflow_name)
+        VALUES ('vlass_image_caching.condor', E'{vlass_image_caching_condor}', 'vlass_image_caching')
+        """
+    )
+
+    op.execute(
+        f"""
+        INSERT INTO workflow_templates (filename, content, workflow_name)
+        VALUES ('vlass_image_caching.sh', E'{vlass_image_caching_sh}', 'vlass_image_caching')
+        """
+    )
+
+
+def downgrade():
+    op.execute(
+        """
+        DELETE FROM workflow_templates WHERE workflow_name = 'vlass_image_caching'
+        """
+    )
+
+    op.execute(
+        """
+        DELETE FROM workflows WHERE workflow_name = 'vlass_image_caching'
+        """
+    )