diff --git a/force_bdss/io/workflow_writer.py b/force_bdss/io/workflow_writer.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..05eff31f7bedfdd8ed9a4acab77122383bc52ac1 100644
--- a/force_bdss/io/workflow_writer.py
+++ b/force_bdss/io/workflow_writer.py
@@ -0,0 +1,35 @@
+import json
+from traits.api import Instance, HasStrictTraits
+
+from ..bundle_registry_plugin import BundleRegistryPlugin
+
+
+class WorkflowWriter(HasStrictTraits):
+    bundle_registry = Instance(BundleRegistryPlugin)
+
+    def __init__(self, bundle_registry, *args, **kwargs):
+        self.bundle_registry = bundle_registry
+
+        super(WorkflowWriter, self).__init__(*args, **kwargs)
+
+    def write(self, workflow, f):
+        data = {
+            "version": "1",
+        }
+
+        data["multi_criteria_optimizer"] = \
+            workflow.multi_criteria_optimizer.__getstate__()
+
+        kpic_data = []
+        for kpic in workflow.kpi_calculators:
+            kpic_data.append(kpic.__getstate__())
+
+        data["kpi_calculators"] = kpic_data
+
+        ds_data = []
+        for ds in workflow.data_sources:
+            ds_data.append(ds.__getstate__())
+
+        data["data_sources"] = ds_data
+
+        json.dump(data, f)