diff --git a/activity.hpp b/activity.hpp
index 751916a757d10618cc175b6d85a1c5c46e3587b5..d9e559ca4d82482dbbda1d209a92d844353e8eda 100644
--- a/activity.hpp
+++ b/activity.hpp
@@ -33,7 +33,7 @@ namespace CIS {
     class Activity : public ActivityBase {
     public:
         // All `Name` should not contain QuotationMark(")
-        Activity(string displayName, string className, string entityName = "")
+        explicit Activity(string displayName, string className, string entityName = "")
             : displayName(Utility::HtmlEscapeString(displayName)), className(className), entityName(entityName), taskId(Utility::GenUUID()) {}
         Activity(const Activity &another)
             : displayName(another.displayName), className(another.className), entityName(another.entityName), taskId(Utility::GenUUID()), inputSettings(another.inputSettings) {}
@@ -88,8 +88,11 @@ namespace CIS {
     class ManualOperation : public ActivityBase {
     public:
         explicit ManualOperation(string displayName, string message = "", string entityName = "")
-            : displayName(Utility::HtmlEscapeString(displayName)), messageInCSharp(Utility::HtmlEscapeString("\"" + message + "\"")), entityName(entityName) {}
-        
+            : displayName(Utility::HtmlEscapeString(displayName)), messageInCSharp(Utility::HtmlEscapeString("\"" + message + "\"")), entityName(entityName), taskId(Utility::GenUUID()) {}
+        ManualOperation(const ManualOperation &another)
+            : displayName(another.displayName), messageInCSharp(another.messageInCSharp), entityName(another.entityName), taskId(Utility::GenUUID()) {}
+        ManualOperation(ManualOperation &&) = default;
+
         ManualOperation &explicitSetMessageInCSharp(string messageInCSharp) {
             this->messageInCSharp = messageInCSharp;
             return *this;
@@ -97,9 +100,11 @@ namespace CIS {
 
     private:
         string displayName, messageInCSharp, entityName;
+        string taskId;
         virtual rlib::string generateXaml() const override {
             rlib::string xamlCode = templates::MANUAL_OPERATION_XAML;
             xamlCode.replace_once("__TEMPLATE_ARG_DisplayName", displayName);
+            xamlCode.replace_once("__TEMPLATE_ARG_TaskId", this->taskId);
             xamlCode.replace_once("__TEMPLATE_ARG_CodeLines", messageInCSharp);
 
             auto entityXaml = this->entityName == "" ? "" : rlib::string(templates::ENTITY_DEF_TEMPLATE).replace("__TEMPLATE_ARG_EntityName", this->entityName);
diff --git a/xaml-template.hpp b/xaml-template.hpp
index 337d536ccf0478ecec4c72189c375444c0582596..a84987874cf7a5af31989f3d975f70ef5b8fa392 100644
--- a/xaml-template.hpp
+++ b/xaml-template.hpp
@@ -96,7 +96,7 @@ 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" __TEMPLATE_ARG_EntityDefPlaceholder>
+R"XAML(    <mwcwa:ManualOperation DeprecatedTaskId="{x:Null}" TaskId="__TEMPLATE_ARG_TaskId" DisplayName="__TEMPLATE_ARG_DisplayName" MonitoringSystems="icm" WaitUntilFinish="True" __TEMPLATE_ARG_EntityDefPlaceholder>
       <mwcwa:ManualOperation.AdditionalContent>
         <InArgument x:TypeArguments="x:String">
           <mca:CSharpValue x:TypeArguments="x:String">__TEMPLATE_ARG_CodeLines</mca:CSharpValue>