diff --git a/src/main/java/net/geant/nmaas/orchestration/ScaleDirection.java b/src/main/java/net/geant/nmaas/orchestration/ScaleDirection.java
new file mode 100644
index 0000000000000000000000000000000000000000..434ac8fa48fcdacb3e5fa88ad08220e916c04902
--- /dev/null
+++ b/src/main/java/net/geant/nmaas/orchestration/ScaleDirection.java
@@ -0,0 +1,5 @@
+package net.geant.nmaas.orchestration;
+
+public enum ScaleDirection {
+    UP, DOWN
+}
diff --git a/src/main/java/net/geant/nmaas/orchestration/events/app/AppScaleActionEvent.java b/src/main/java/net/geant/nmaas/orchestration/events/app/AppScaleActionEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..4f6f103d8026247f081203eeaaa39d6c74a0500e
--- /dev/null
+++ b/src/main/java/net/geant/nmaas/orchestration/events/app/AppScaleActionEvent.java
@@ -0,0 +1,27 @@
+package net.geant.nmaas.orchestration.events.app;
+
+import net.geant.nmaas.orchestration.ScaleDirection;
+import org.springframework.context.ApplicationEvent;
+import net.geant.nmaas.orchestration.Identifier;
+
+
+public class AppScaleActionEvent extends ApplicationEvent {
+
+    private final Identifier deploymentId;
+    private final ScaleDirection direction;
+
+    public AppScaleActionEvent(Object source, Identifier deploymentId, ScaleDirection direction) {
+        super(source);
+        this.deploymentId = deploymentId;
+        this.direction = direction;
+    }
+
+    public Identifier getDeploymentId() {
+        return deploymentId;
+    }
+
+    public ScaleDirection getDirection() {
+        return direction;
+    }
+
+}
diff --git a/src/main/java/net/geant/nmaas/orchestration/tasks/app/AppScaleTask.java b/src/main/java/net/geant/nmaas/orchestration/tasks/app/AppScaleTask.java
new file mode 100644
index 0000000000000000000000000000000000000000..6e3a84acfc568b41e0ef5469461e95953342ca93
--- /dev/null
+++ b/src/main/java/net/geant/nmaas/orchestration/tasks/app/AppScaleTask.java
@@ -0,0 +1,43 @@
+package net.geant.nmaas.orchestration.tasks.app;
+
+import lombok.RequiredArgsConstructor;
+import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.KServiceLifecycleManager;
+import net.geant.nmaas.orchestration.AppDeploymentRepositoryManager;
+import net.geant.nmaas.orchestration.entities.AppDeployment;
+import net.geant.nmaas.orchestration.entities.AppDeploymentState;
+import net.geant.nmaas.orchestration.events.app.AppScaleActionEvent;
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Component;
+
+@Component
+@RequiredArgsConstructor
+public class AppScaleTask {
+
+    private final KServiceLifecycleManager kServiceLifecycleManager;
+    private final AppDeploymentRepositoryManager appDeploymentRepositoryManager;
+
+
+    @EventListener
+    public void handleScaleEvent(AppScaleActionEvent event) {
+
+        AppDeployment appDeployment = appDeploymentRepositoryManager.load(event.getDeploymentId());
+
+        switch (event.getDirection()) {
+            case DOWN:
+                appDeployment.setState(AppDeploymentState.SCALED_DOWN);
+                appDeploymentRepositoryManager.update(appDeployment);
+
+                kServiceLifecycleManager.scaleDeployment(event.getDeploymentId(), 0);
+
+                break;
+            case UP:
+                appDeployment.setState(AppDeploymentState.APPLICATION_CONFIGURED);
+                appDeploymentRepositoryManager.update(appDeployment);
+
+                kServiceLifecycleManager.scaleDeployment(event.getDeploymentId(), 1);
+
+                break;
+        }
+
+    }
+}