diff --git a/apps/canvas/back/index.ts b/apps/canvas/back/index.ts
index b103756..6193a90 100644
--- a/apps/canvas/back/index.ts
+++ b/apps/canvas/back/index.ts
@@ -82,19 +82,18 @@
         } else {
             resp.status(200);
             resp.header("content-type", "application/json");
-            console.log(r);
             if (r.draft == null) {
                 if (r.state == null) {
                     resp.send({
-                        nodes: [], 
+                        nodes: [],
                         edges: [],
-                        viewport: { x: 0, y: 0, zoom: 1},
-                    });    
+                        viewport: { x: 0, y: 0, zoom: 1 },
+                    });
                 } else {
-                    resp.send(JSON.parse(r.state.toString()));
+                    resp.send(JSON.parse(Buffer.from(r.state).toString("utf8")));
                 }
             } else {
-                resp.send(JSON.parse(Buffer.from(r.state!).toString("utf8")));
+                resp.send(JSON.parse(Buffer.from(r.draft).toString("utf8")));
             }
         }
     } catch (e) {
@@ -107,30 +106,69 @@
 
 const handleDeploy: express.Handler = async (req, resp) => {
     try {
-        console.log(req.params);
+        const projectId = Number(req.params["projectId"]);
         const state = Buffer.from(JSON.stringify(req.body.state));
+        const p = await db.project.findUnique({
+            where: {
+                id: projectId,
+            },
+            select: {
+                instanceId: true,
+            }
+        });
+        if (p === null) {
+            resp.status(404);
+            return;
+        }
         await db.project.update({
             where: {
-                id: Number(req.params["projectId"]),
+                id: projectId,
             },
             data: {
                 draft: state,
             },
         });
-        const r = await axios.post("http://appmanager.hgrz-appmanager.svc.cluster.local/api/dodo-app", { config: req.body.config });
-        if (r.status === 200) {
-            const d = r.data as { id: string, deployKey: string };
-            await db.project.update({
-                where: {
-                    id: Number(req.params["projectId"]),
-                },
+        let r: { status: number, data: { id: string, deployKey: string } };
+        if (p.instanceId == null) {
+            r = await axios.request({
+                url: "http://appmanager.hgrz-appmanager.svc.cluster.local/api/dodo-app",
+                method: "post",
                 data: {
-                    state,
-                    draft: null,
-                    instanceId: d.id,
-                    deployKey: d.deployKey,
-                },
+                    config: req.body.config,
+                }
             });
+            if (r.status === 200) {
+                await db.project.update({
+                    where: {
+                        id: projectId,
+                    },
+                    data: {
+                        state,
+                        draft: null,
+                        instanceId: r.data.id,
+                        deployKey: r.data.deployKey,
+                    },
+                });
+            }
+        } else {
+            r = await axios.request({
+                url: `http://appmanager.hgrz-appmanager.svc.cluster.local/api/dodo-app/${p.instanceId}`,
+                method: "put",
+                data: {
+                    config: req.body.config,
+                }
+            });
+            if (r.status === 200) {
+                await db.project.update({
+                    where: {
+                        id: projectId,
+                    },
+                    data: {
+                        state,
+                        draft: null,
+                    },
+                });
+            }
         }
     } catch (e) {
         console.log(e);
