diff --git a/activity.hpp b/activity.hpp
index 932fd7fd84c1c606611575a63bf9fdf1e9ab3989..b2439fc795ed89f8e225529f04135d23eeb7718f 100644
--- a/activity.hpp
+++ b/activity.hpp
@@ -21,9 +21,14 @@ namespace CIS {
     class Flow;
     class Metadata;
 
-    class Activity {
-    public:
+    class ActivityBase {
+    private:
         friend Flow;
+        virtual rlib::string generateXaml() const = 0;
+    };
+
+    class Activity : private ActivityBase {
+    public:
         // All `Name` should not contain QuotationMark(")
         Activity(string displayName, string className, string entityName = "")
             : displayName(Utility::HtmlEscapeString(displayName)), className(className), entityName(entityName), taskId(Utility::GenUUID()) {}
@@ -50,7 +55,7 @@ namespace CIS {
             auto inputSettingsString = ",\n"_rs.join(inputSettingStrings);
             return rlib::string(templates::ACTIVITY_DICT_TEMPLATE_UNESCAPED).replace_once("__TEMPLATE_ARG_DictLines", inputSettingsString);
         }
-        auto generateXaml() const {
+        virtual rlib::string generateXaml() const {
             rlib::string xamlCode;
 
             if(inputSettings.empty()) {
@@ -75,9 +80,13 @@ namespace CIS {
         }
     };
 
+    class ManualOperation : private ActivityBase {
+
+    };
+
     class Flow {
     public:
-        Flow(const Activity &activity) {
+        Flow(const ActivityBase &activity) {
             xamlCode = activity.generateXaml();
         }
         Flow(rlib::string xamlCode) : xamlCode(xamlCode) {}
diff --git a/xaml-template.hpp b/xaml-template.hpp
index 6c27599dac90702e0b34f36db6eddb412cbbe5fb..9920e955fdb22b88682d92d803adc0cb019fe0b5 100644
--- a/xaml-template.hpp
+++ b/xaml-template.hpp
@@ -94,6 +94,17 @@ __TEMPLATE_ARG_XtraAssemblies  </sco:Collection>
 )XAML";
 constexpr auto STD_XAML_TAIL = "</Activity>";
 
+
+constexpr auto MANUAL_OPERATION_XAML = 
+R"XAML(    <mwcwa:ManualOperation DeprecatedTaskId="{x:Null}" TaskId="{x:Null}" DisplayName="__TEMPLATE_ARG_DisplayName" MonitoringSystems="icm" WaitUntilFinish="True">
+      <mwcwa:ManualOperation.AdditionalContent>
+        <InArgument x:TypeArguments="x:String">
+          <mca:CSharpValue x:TypeArguments="x:String">__TEMPLATE_ARG_CodeLines</mca:CSharpValue>
+        </InArgument>
+      </mwcwa:ManualOperation.AdditionalContent>
+    </mwcwa:ManualOperation>
+)XAML";
+
 }
 }