Bug: Add connector enums for Routing in add_connector script  [BUG] 



### Bug Description

Recently, routing has been moved to OSS. This change breaks the add_connector script. Connector Enums should be added in euclid enums .

### Expected Behavior

after running `bash add_connector.sh <connector-name> <connector-base-url>` code needs to be compiled after template code is created. 

### Actual Behavior

compilation error before template code is generated because missing connector enums in Routing .

### Steps To Reproduce

Provide an unambiguous set of steps to reproduce this bug. Include code or configuration to reproduce, if relevant.
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
run `bash add_connector.sh <connector-name> <connector-base-url>` to create new connector template code .This would throw errors in following files 
crates/api_models/src/routing.rs:290:30
crates/api_models/src/enums.rs:168:5


### Context For The Bug

_No response_

### Environment

Are you using hyperswitch hosted version? Yes/No
If yes, please provide the value of the `x-request-id` response header to help us debug your issue.

If not (or if building/running locally), please provide the following details:
1. Operating System or Linux distribution:
2. Rust version (output of `rustc --version`): ``
3. App version (output of `cargo r --features vergen -- --version`): ``


### Have you spent some time checking if this bug has been raised before?

- [X] I checked and didn't find a similar issue

### Have you read the Contributing Guidelines?

- [X] I have read the [Contributing Guidelines](https://github.com/juspay/hyperswitch/blob/main/docs/CONTRIBUTING.md)

### Are you willing to submit a PR?

Yes, I am willing to submit a PR!
diff --git a/Cargo.lock b/Cargo.lock
index e4a317d74f4..2ca33b6910a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2339,6 +2339,7 @@ name = "euclid_wasm"
 version = "0.1.0"
 dependencies = [
  "api_models",
+ "common_enums",
  "currency_conversion",
  "euclid",
  "getrandom 0.2.10",
@@ -3306,6 +3307,7 @@ name = "kgraph_utils"
 version = "0.1.0"
 dependencies = [
  "api_models",
+ "common_enums",
  "criterion",
  "euclid",
  "masking",
diff --git a/connector-template/mod.rs b/connector-template/mod.rs
index e441b0e5879..e9945a726a9 100644
--- a/connector-template/mod.rs
+++ b/connector-template/mod.rs
@@ -106,6 +106,7 @@ impl ConnectorCommon for {{project-name | downcase | pascal_case}} {
             message: response.message,
             reason: response.reason,
             attempt_status: None,
+            connector_transaction_id: None,
         })
     }
 }
@@ -485,7 +486,7 @@ impl api::IncomingWebhook for {{project-name | downcase | pascal_case}} {
     fn get_webhook_resource_object(
         &self,
         _request: &api::IncomingWebhookRequestDetails<'_>,
-    ) -> CustomResult<Box<dyn erased_serde::Serialize>, errors::ConnectorError> {
+    ) -> CustomResult<Box<dyn masking::ErasedMaskSerialize>, errors::ConnectorError> {
         Err(errors::ConnectorError::WebhooksNotImplemented).into_report()
     }
 }
diff --git a/crates/api_models/src/enums.rs b/crates/api_models/src/enums.rs
index ffefaa2ad2c..535be4dfb15 100644
--- a/crates/api_models/src/enums.rs
+++ b/crates/api_models/src/enums.rs
@@ -147,104 +147,6 @@ impl Connector {
     }
 }
 
-#[derive(
-    Clone,
-    Copy,
-    Debug,
-    Eq,
-    Hash,
-    PartialEq,
-    serde::Serialize,
-    serde::Deserialize,
-    strum::Display,
-    strum::EnumString,
-    strum::EnumIter,
-    strum::EnumVariantNames,
-)]
-#[serde(rename_all = "snake_case")]
-#[strum(serialize_all = "snake_case")]
-pub enum RoutableConnectors {
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "phonypay")]
-    #[strum(serialize = "phonypay")]
-    DummyConnector1,
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "fauxpay")]
-    #[strum(serialize = "fauxpay")]
-    DummyConnector2,
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "pretendpay")]
-    #[strum(serialize = "pretendpay")]
-    DummyConnector3,
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "stripe_test")]
-    #[strum(serialize = "stripe_test")]
-    DummyConnector4,
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "adyen_test")]
-    #[strum(serialize = "adyen_test")]
-    DummyConnector5,
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "checkout_test")]
-    #[strum(serialize = "checkout_test")]
-    DummyConnector6,
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "paypal_test")]
-    #[strum(serialize = "paypal_test")]
-    DummyConnector7,
-    Aci,
-    Adyen,
-    Airwallex,
-    Authorizedotnet,
-    Bankofamerica,
-    Bitpay,
-    Bambora,
-    Bluesnap,
-    Boku,
-    Braintree,
-    Cashtocode,
-    Checkout,
-    Coinbase,
-    Cryptopay,
-    Cybersource,
-    Dlocal,
-    Fiserv,
-    Forte,
-    Globalpay,
-    Globepay,
-    Gocardless,
-    Helcim,
-    Iatapay,
-    Klarna,
-    Mollie,
-    Multisafepay,
-    Nexinets,
-    Nmi,
-    Noon,
-    Nuvei,
-    // Opayo, added as template code for future usage
-    Opennode,
-    // Payeezy, As psync and rsync are not supported by this connector, it is added as template code for future usage
-    Payme,
-    Paypal,
-    Payu,
-    Powertranz,
-    Prophetpay,
-    Rapyd,
-    Shift4,
-    Square,
-    Stax,
-    Stripe,
-    Trustpay,
-    // Tsys,
-    Tsys,
-    Volt,
-    Wise,
-    Worldline,
-    Worldpay,
-    Zen,
-}
-
 #[cfg(feature = "payouts")]
 #[derive(
     Clone,
diff --git a/crates/api_models/src/routing.rs b/crates/api_models/src/routing.rs
index 47a44ea7443..2236714da1d 100644
--- a/crates/api_models/src/routing.rs
+++ b/crates/api_models/src/routing.rs
@@ -4,7 +4,6 @@ use common_utils::errors::ParsingError;
 use error_stack::IntoReport;
 use euclid::{
     dssa::types::EuclidAnalysable,
-    enums as euclid_enums,
     frontend::{
         ast,
         dir::{DirKeyKind, EuclidDirFilter},
@@ -287,71 +286,7 @@ impl From<RoutableConnectorChoice> for RoutableChoiceSerde {
 impl From<RoutableConnectorChoice> for ast::ConnectorChoice {
     fn from(value: RoutableConnectorChoice) -> Self {
         Self {
-            connector: match value.connector {
-                #[cfg(feature = "dummy_connector")]
-                RoutableConnectors::DummyConnector1 => euclid_enums::Connector::DummyConnector1,
-                #[cfg(feature = "dummy_connector")]
-                RoutableConnectors::DummyConnector2 => euclid_enums::Connector::DummyConnector2,
-                #[cfg(feature = "dummy_connector")]
-                RoutableConnectors::DummyConnector3 => euclid_enums::Connector::DummyConnector3,
-                #[cfg(feature = "dummy_connector")]
-                RoutableConnectors::DummyConnector4 => euclid_enums::Connector::DummyConnector4,
-                #[cfg(feature = "dummy_connector")]
-                RoutableConnectors::DummyConnector5 => euclid_enums::Connector::DummyConnector5,
-                #[cfg(feature = "dummy_connector")]
-                RoutableConnectors::DummyConnector6 => euclid_enums::Connector::DummyConnector6,
-                #[cfg(feature = "dummy_connector")]
-                RoutableConnectors::DummyConnector7 => euclid_enums::Connector::DummyConnector7,
-                RoutableConnectors::Aci => euclid_enums::Connector::Aci,
-                RoutableConnectors::Adyen => euclid_enums::Connector::Adyen,
-                RoutableConnectors::Airwallex => euclid_enums::Connector::Airwallex,
-                RoutableConnectors::Authorizedotnet => euclid_enums::Connector::Authorizedotnet,
-                RoutableConnectors::Bambora => euclid_enums::Connector::Bambora,
-                RoutableConnectors::Bankofamerica => euclid_enums::Connector::Bankofamerica,
-                RoutableConnectors::Bitpay => euclid_enums::Connector::Bitpay,
-                RoutableConnectors::Bluesnap => euclid_enums::Connector::Bluesnap,
-                RoutableConnectors::Boku => euclid_enums::Connector::Boku,
-                RoutableConnectors::Braintree => euclid_enums::Connector::Braintree,
-                RoutableConnectors::Cashtocode => euclid_enums::Connector::Cashtocode,
-                RoutableConnectors::Checkout => euclid_enums::Connector::Checkout,
-                RoutableConnectors::Coinbase => euclid_enums::Connector::Coinbase,
-                RoutableConnectors::Cryptopay => euclid_enums::Connector::Cryptopay,
-                RoutableConnectors::Cybersource => euclid_enums::Connector::Cybersource,
-                RoutableConnectors::Dlocal => euclid_enums::Connector::Dlocal,
-                RoutableConnectors::Fiserv => euclid_enums::Connector::Fiserv,
-                RoutableConnectors::Forte => euclid_enums::Connector::Forte,
-                RoutableConnectors::Globalpay => euclid_enums::Connector::Globalpay,
-                RoutableConnectors::Globepay => euclid_enums::Connector::Globepay,
-                RoutableConnectors::Gocardless => euclid_enums::Connector::Gocardless,
-                RoutableConnectors::Helcim => euclid_enums::Connector::Helcim,
-                RoutableConnectors::Iatapay => euclid_enums::Connector::Iatapay,
-                RoutableConnectors::Klarna => euclid_enums::Connector::Klarna,
-                RoutableConnectors::Mollie => euclid_enums::Connector::Mollie,
-                RoutableConnectors::Multisafepay => euclid_enums::Connector::Multisafepay,
-                RoutableConnectors::Nexinets => euclid_enums::Connector::Nexinets,
-                RoutableConnectors::Nmi => euclid_enums::Connector::Nmi,
-                RoutableConnectors::Noon => euclid_enums::Connector::Noon,
-                RoutableConnectors::Nuvei => euclid_enums::Connector::Nuvei,
-                RoutableConnectors::Opennode => euclid_enums::Connector::Opennode,
-                RoutableConnectors::Payme => euclid_enums::Connector::Payme,
-                RoutableConnectors::Paypal => euclid_enums::Connector::Paypal,
-                RoutableConnectors::Payu => euclid_enums::Connector::Payu,
-                RoutableConnectors::Powertranz => euclid_enums::Connector::Powertranz,
-                RoutableConnectors::Prophetpay => euclid_enums::Connector::Prophetpay,
-                RoutableConnectors::Rapyd => euclid_enums::Connector::Rapyd,
-                RoutableConnectors::Shift4 => euclid_enums::Connector::Shift4,
-                RoutableConnectors::Square => euclid_enums::Connector::Square,
-                RoutableConnectors::Stax => euclid_enums::Connector::Stax,
-                RoutableConnectors::Stripe => euclid_enums::Connector::Stripe,
-                RoutableConnectors::Trustpay => euclid_enums::Connector::Trustpay,
-                RoutableConnectors::Tsys => euclid_enums::Connector::Tsys,
-                RoutableConnectors::Volt => euclid_enums::Connector::Volt,
-                RoutableConnectors::Wise => euclid_enums::Connector::Wise,
-                RoutableConnectors::Worldline => euclid_enums::Connector::Worldline,
-                RoutableConnectors::Worldpay => euclid_enums::Connector::Worldpay,
-                RoutableConnectors::Zen => euclid_enums::Connector::Zen,
-            },
-
+            connector: value.connector,
             #[cfg(not(feature = "connector_choice_mca_id"))]
             sub_label: value.sub_label,
         }
diff --git a/crates/common_enums/Cargo.toml b/crates/common_enums/Cargo.toml
index 88628825ca6..cd061970bff 100644
--- a/crates/common_enums/Cargo.toml
+++ b/crates/common_enums/Cargo.toml
@@ -7,6 +7,10 @@ rust-version.workspace = true
 readme = "README.md"
 license.workspace = true
 
+[features]
+default = ["dummy_connector"]
+dummy_connector = []
+
 [dependencies]
 diesel = { version = "2.1.0", features = ["postgres"] }
 serde = { version = "1.0.160", features = ["derive"] }
diff --git a/crates/common_enums/src/enums.rs b/crates/common_enums/src/enums.rs
index 063e35933c4..3f343965130 100644
--- a/crates/common_enums/src/enums.rs
+++ b/crates/common_enums/src/enums.rs
@@ -59,6 +59,105 @@ pub enum AttemptStatus {
     DeviceDataCollectionPending,
 }
 
+#[derive(
+    Clone,
+    Copy,
+    Debug,
+    Eq,
+    Hash,
+    PartialEq,
+    serde::Serialize,
+    serde::Deserialize,
+    strum::Display,
+    strum::EnumString,
+    strum::EnumIter,
+    strum::EnumVariantNames,
+)]
+#[router_derive::diesel_enum(storage_type = "db_enum")]
+#[serde(rename_all = "snake_case")]
+#[strum(serialize_all = "snake_case")]
+pub enum RoutableConnectors {
+    #[cfg(feature = "dummy_connector")]
+    #[serde(rename = "phonypay")]
+    #[strum(serialize = "phonypay")]
+    DummyConnector1,
+    #[cfg(feature = "dummy_connector")]
+    #[serde(rename = "fauxpay")]
+    #[strum(serialize = "fauxpay")]
+    DummyConnector2,
+    #[cfg(feature = "dummy_connector")]
+    #[serde(rename = "pretendpay")]
+    #[strum(serialize = "pretendpay")]
+    DummyConnector3,
+    #[cfg(feature = "dummy_connector")]
+    #[serde(rename = "stripe_test")]
+    #[strum(serialize = "stripe_test")]
+    DummyConnector4,
+    #[cfg(feature = "dummy_connector")]
+    #[serde(rename = "adyen_test")]
+    #[strum(serialize = "adyen_test")]
+    DummyConnector5,
+    #[cfg(feature = "dummy_connector")]
+    #[serde(rename = "checkout_test")]
+    #[strum(serialize = "checkout_test")]
+    DummyConnector6,
+    #[cfg(feature = "dummy_connector")]
+    #[serde(rename = "paypal_test")]
+    #[strum(serialize = "paypal_test")]
+    DummyConnector7,
+    Aci,
+    Adyen,
+    Airwallex,
+    Authorizedotnet,
+    Bankofamerica,
+    Bitpay,
+    Bambora,
+    Bluesnap,
+    Boku,
+    Braintree,
+    Cashtocode,
+    Checkout,
+    Coinbase,
+    Cryptopay,
+    Cybersource,
+    Dlocal,
+    Fiserv,
+    Forte,
+    Globalpay,
+    Globepay,
+    Gocardless,
+    Helcim,
+    Iatapay,
+    Klarna,
+    Mollie,
+    Multisafepay,
+    Nexinets,
+    Nmi,
+    Noon,
+    Nuvei,
+    // Opayo, added as template code for future usage
+    Opennode,
+    // Payeezy, As psync and rsync are not supported by this connector, it is added as template code for future usage
+    Payme,
+    Paypal,
+    Payu,
+    Powertranz,
+    Prophetpay,
+    Rapyd,
+    Shift4,
+    Square,
+    Stax,
+    Stripe,
+    Trustpay,
+    // Tsys,
+    Tsys,
+    Volt,
+    Wise,
+    Worldline,
+    Worldpay,
+    Zen,
+}
+
 impl AttemptStatus {
     pub fn is_terminal_status(self) -> bool {
         match self {
diff --git a/crates/euclid/src/enums.rs b/crates/euclid/src/enums.rs
index dc6d9f66a58..68e081c7aa9 100644
--- a/crates/euclid/src/enums.rs
+++ b/crates/euclid/src/enums.rs
@@ -1,8 +1,7 @@
 pub use common_enums::{
     AuthenticationType, CaptureMethod, CardNetwork, Country, Currency,
-    FutureUsage as SetupFutureUsage, PaymentMethod, PaymentMethodType,
+    FutureUsage as SetupFutureUsage, PaymentMethod, PaymentMethodType, RoutableConnectors,
 };
-use serde::{Deserialize, Serialize};
 use strum::VariantNames;
 
 pub trait CollectVariants {
@@ -24,6 +23,7 @@ macro_rules! collect_variants {
 pub(crate) use collect_variants;
 
 collect_variants!(PaymentMethod);
+collect_variants!(RoutableConnectors);
 collect_variants!(PaymentType);
 collect_variants!(MandateType);
 collect_variants!(MandateAcceptanceType);
@@ -33,105 +33,8 @@ collect_variants!(AuthenticationType);
 collect_variants!(CaptureMethod);
 collect_variants!(Currency);
 collect_variants!(Country);
-collect_variants!(Connector);
 collect_variants!(SetupFutureUsage);
 
-#[derive(
-    Debug,
-    Copy,
-    Clone,
-    PartialEq,
-    Eq,
-    Hash,
-    Serialize,
-    Deserialize,
-    strum::Display,
-    strum::EnumVariantNames,
-    strum::EnumIter,
-    strum::EnumString,
-    frunk::LabelledGeneric,
-)]
-#[serde(rename_all = "snake_case")]
-#[strum(serialize_all = "snake_case")]
-pub enum Connector {
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "phonypay")]
-    #[strum(serialize = "phonypay")]
-    DummyConnector1,
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "fauxpay")]
-    #[strum(serialize = "fauxpay")]
-    DummyConnector2,
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "pretendpay")]
-    #[strum(serialize = "pretendpay")]
-    DummyConnector3,
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "stripe_test")]
-    #[strum(serialize = "stripe_test")]
-    DummyConnector4,
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "adyen_test")]
-    #[strum(serialize = "adyen_test")]
-    DummyConnector5,
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "checkout_test")]
-    #[strum(serialize = "checkout_test")]
-    DummyConnector6,
-    #[cfg(feature = "dummy_connector")]
-    #[serde(rename = "paypal_test")]
-    #[strum(serialize = "paypal_test")]
-    DummyConnector7,
-    Aci,
-    Adyen,
-    Airwallex,
-    Authorizedotnet,
-    Bambora,
-    Bankofamerica,
-    Bitpay,
-    Bluesnap,
-    Boku,
-    Braintree,
-    Cashtocode,
-    Checkout,
-    Coinbase,
-    Cryptopay,
-    Cybersource,
-    Dlocal,
-    Fiserv,
-    Forte,
-    Globalpay,
-    Globepay,
-    Gocardless,
-    Helcim,
-    Iatapay,
-    Klarna,
-    Mollie,
-    Multisafepay,
-    Nexinets,
-    Nmi,
-    Noon,
-    Nuvei,
-    Opennode,
-    Payme,
-    Paypal,
-    Payu,
-    Powertranz,
-    Prophetpay,
-    Rapyd,
-    Shift4,
-    Square,
-    Stax,
-    Stripe,
-    Trustpay,
-    Tsys,
-    Volt,
-    Wise,
-    Worldline,
-    Worldpay,
-    Zen,
-}
-
 #[derive(
     Clone,
     Debug,
diff --git a/crates/euclid/src/frontend/ast.rs b/crates/euclid/src/frontend/ast.rs
index 3adb06ab187..0dad9b53c32 100644
--- a/crates/euclid/src/frontend/ast.rs
+++ b/crates/euclid/src/frontend/ast.rs
@@ -2,16 +2,14 @@ pub mod lowering;
 #[cfg(feature = "ast_parser")]
 pub mod parser;
 
+use common_enums::RoutableConnectors;
 use serde::{Deserialize, Serialize};
 
-use crate::{
-    enums::Connector,
-    types::{DataType, Metadata},
-};
+use crate::types::{DataType, Metadata};
 
 #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
 pub struct ConnectorChoice {
-    pub connector: Connector,
+    pub connector: RoutableConnectors,
     #[cfg(not(feature = "connector_choice_mca_id"))]
     pub sub_label: Option<String>,
 }
diff --git a/crates/euclid/src/frontend/dir.rs b/crates/euclid/src/frontend/dir.rs
index 7f2fc252d23..f8cef1f9295 100644
--- a/crates/euclid/src/frontend/dir.rs
+++ b/crates/euclid/src/frontend/dir.rs
@@ -13,7 +13,7 @@ macro_rules! dirval {
     (Connector = $name:ident) => {
         $crate::frontend::dir::DirValue::Connector(Box::new(
             $crate::frontend::ast::ConnectorChoice {
-                connector: $crate::frontend::dir::enums::Connector::$name,
+                connector: $crate::enums::RoutableConnectors::$name,
             },
         ))
     };
@@ -51,7 +51,7 @@ macro_rules! dirval {
     (Connector = $name:ident) => {
         $crate::frontend::dir::DirValue::Connector(Box::new(
             $crate::frontend::ast::ConnectorChoice {
-                connector: $crate::frontend::dir::enums::Connector::$name,
+                connector: $crate::enums::RoutableConnectors::$name,
                 sub_label: None,
             },
         ))
@@ -60,7 +60,7 @@ macro_rules! dirval {
     (Connector = ($name:ident, $sub_label:literal)) => {
         $crate::frontend::dir::DirValue::Connector(Box::new(
             $crate::frontend::ast::ConnectorChoice {
-                connector: $crate::frontend::dir::enums::Connector::$name,
+                connector: $crate::enums::RoutableConnectors::$name,
                 sub_label: Some($sub_label.to_string()),
             },
         ))
@@ -464,7 +464,7 @@ impl DirKeyKind {
                     .collect(),
             ),
             Self::Connector => Some(
-                enums::Connector::iter()
+                common_enums::RoutableConnectors::iter()
                     .map(|connector| {
                         DirValue::Connector(Box::new(ast::ConnectorChoice {
                             connector,
diff --git a/crates/euclid/src/frontend/dir/enums.rs b/crates/euclid/src/frontend/dir/enums.rs
index f049ad35328..0b71f916d03 100644
--- a/crates/euclid/src/frontend/dir/enums.rs
+++ b/crates/euclid/src/frontend/dir/enums.rs
@@ -2,9 +2,9 @@ use strum::VariantNames;
 
 use crate::enums::collect_variants;
 pub use crate::enums::{
-    AuthenticationType, CaptureMethod, CardNetwork, Connector, Country, Country as BusinessCountry,
+    AuthenticationType, CaptureMethod, CardNetwork, Country, Country as BusinessCountry,
     Country as BillingCountry, Currency as PaymentCurrency, MandateAcceptanceType, MandateType,
-    PaymentMethod, PaymentType, SetupFutureUsage,
+    PaymentMethod, PaymentType, RoutableConnectors, SetupFutureUsage,
 };
 
 #[derive(
diff --git a/crates/euclid_wasm/Cargo.toml b/crates/euclid_wasm/Cargo.toml
index 47e349847ef..8c96a7f67da 100644
--- a/crates/euclid_wasm/Cargo.toml
+++ b/crates/euclid_wasm/Cargo.toml
@@ -20,6 +20,7 @@ api_models = { version = "0.1.0", path = "../api_models", package = "api_models"
 currency_conversion = { version = "0.1.0", path = "../currency_conversion" }
 euclid = { path = "../euclid", features = [] }
 kgraph_utils = { version = "0.1.0", path = "../kgraph_utils" }
+common_enums = { version = "0.1.0", path = "../common_enums" }
 
 # Third party crates
 getrandom = { version = "0.2.10", features = ["js"] }
diff --git a/crates/euclid_wasm/src/lib.rs b/crates/euclid_wasm/src/lib.rs
index 48d9ac0d82a..cab82f8ce41 100644
--- a/crates/euclid_wasm/src/lib.rs
+++ b/crates/euclid_wasm/src/lib.rs
@@ -7,6 +7,7 @@ use std::{
 };
 
 use api_models::{admin as admin_api, routing::ConnectorSelection};
+use common_enums::RoutableConnectors;
 use currency_conversion::{
     conversion::convert as convert_currency, types as currency_conversion_types,
 };
@@ -17,7 +18,6 @@ use euclid::{
         graph::{self, Memoization},
         state_machine, truth,
     },
-    enums,
     frontend::{
         ast,
         dir::{self, enums as dir_enums},
@@ -61,8 +61,8 @@ pub fn convert_forex_value(amount: i64, from_currency: JsValue, to_currency: JsV
         .get()
         .ok_or("Forex Data not seeded")
         .err_to_js()?;
-    let from_currency: enums::Currency = serde_wasm_bindgen::from_value(from_currency)?;
-    let to_currency: enums::Currency = serde_wasm_bindgen::from_value(to_currency)?;
+    let from_currency: common_enums::Currency = serde_wasm_bindgen::from_value(from_currency)?;
+    let to_currency: common_enums::Currency = serde_wasm_bindgen::from_value(to_currency)?;
     let converted_amount = convert_currency(forex_data, from_currency, to_currency, amount)
         .map_err(|_| "conversion not possible for provided values")
         .err_to_js()?;
@@ -80,7 +80,7 @@ pub fn seed_knowledge_graph(mcas: JsValue) -> JsResult {
         .iter()
         .map(|mca| {
             Ok::<_, strum::ParseError>(ast::ConnectorChoice {
-                connector: dir_enums::Connector::from_str(&mca.connector_name)?,
+                connector: RoutableConnectors::from_str(&mca.connector_name)?,
                 #[cfg(not(feature = "connector_choice_mca_id"))]
                 sub_label: mca.business_sub_label.clone(),
             })
@@ -183,7 +183,9 @@ pub fn run_program(program: JsValue, input: JsValue) -> JsResult {
 
 #[wasm_bindgen(js_name = getAllConnectors)]
 pub fn get_all_connectors() -> JsResult {
-    Ok(serde_wasm_bindgen::to_value(enums::Connector::VARIANTS)?)
+    Ok(serde_wasm_bindgen::to_value(
+        common_enums::RoutableConnectors::VARIANTS,
+    )?)
 }
 
 #[wasm_bindgen(js_name = getAllKeys)]
diff --git a/crates/kgraph_utils/Cargo.toml b/crates/kgraph_utils/Cargo.toml
index cd0adf0bc8a..44a73dae4d7 100644
--- a/crates/kgraph_utils/Cargo.toml
+++ b/crates/kgraph_utils/Cargo.toml
@@ -11,6 +11,7 @@ connector_choice_mca_id = ["api_models/connector_choice_mca_id", "euclid/connect
 
 [dependencies]
 api_models = { version = "0.1.0", path = "../api_models", package = "api_models" }
+common_enums = { version = "0.1.0", path = "../common_enums" }
 euclid = { version = "0.1.0", path = "../euclid" }
 masking = { version = "0.1.0", path = "../masking/" }
 
diff --git a/crates/kgraph_utils/src/mca.rs b/crates/kgraph_utils/src/mca.rs
index deea51bd880..0e224a8f3d9 100644
--- a/crates/kgraph_utils/src/mca.rs
+++ b/crates/kgraph_utils/src/mca.rs
@@ -5,10 +5,7 @@ use api_models::{
 };
 use euclid::{
     dssa::graph::{self, DomainIdentifier},
-    frontend::{
-        ast,
-        dir::{self, enums as dir_enums},
-    },
+    frontend::{ast, dir},
     types::{NumValue, NumValueRefinement},
 };
 
@@ -277,7 +274,7 @@ fn compile_merchant_connector_graph(
     builder: &mut graph::KnowledgeGraphBuilder<'_>,
     mca: admin_api::MerchantConnectorResponse,
 ) -> Result<(), KgraphError> {
-    let connector = dir_enums::Connector::from_str(&mca.connector_name)
+    let connector = common_enums::RoutableConnectors::from_str(&mca.connector_name)
         .map_err(|_| KgraphError::InvalidConnectorName(mca.connector_name.clone()))?;
 
     let mut agg_nodes: Vec<(graph::NodeId, graph::Relation)> = Vec::new();
diff --git a/crates/router/src/core/payments.rs b/crates/router/src/core/payments.rs
index 1c40ef81f49..d308c98b75d 100644
--- a/crates/router/src/core/payments.rs
+++ b/crates/router/src/core/payments.rs
@@ -81,7 +81,7 @@ pub async fn payments_operation_core<F, Req, Op, FData, Ctx>(
     req: Req,
     call_connector_action: CallConnectorAction,
     auth_flow: services::AuthFlow,
-    eligible_connectors: Option<Vec<api_models::enums::RoutableConnectors>>,
+    eligible_connectors: Option<Vec<common_enums::RoutableConnectors>>,
     header_payload: HeaderPayload,
 ) -> RouterResult<(
     PaymentData<F>,
diff --git a/crates/router/src/core/payments/routing/transformers.rs b/crates/router/src/core/payments/routing/transformers.rs
index 5704f82f498..b273f18f3fd 100644
--- a/crates/router/src/core/payments/routing/transformers.rs
+++ b/crates/router/src/core/payments/routing/transformers.rs
@@ -1,15 +1,15 @@
-use api_models::{self, enums as api_enums, routing as routing_types};
+use api_models::{self, routing as routing_types};
 use diesel_models::enums as storage_enums;
 use euclid::{enums as dsl_enums, frontend::ast as dsl_ast};
 
-use crate::types::transformers::{ForeignFrom, ForeignInto};
+use crate::types::transformers::ForeignFrom;
 
 impl ForeignFrom<routing_types::RoutableConnectorChoice> for dsl_ast::ConnectorChoice {
     fn foreign_from(from: routing_types::RoutableConnectorChoice) -> Self {
         Self {
             // #[cfg(feature = "backwards_compatibility")]
             // choice_kind: from.choice_kind.foreign_into(),
-            connector: from.connector.foreign_into(),
+            connector: from.connector,
             #[cfg(not(feature = "connector_choice_mca_id"))]
             sub_label: from.sub_label,
         }
@@ -52,72 +52,3 @@ impl ForeignFrom<storage_enums::MandateDataType> for dsl_enums::MandateType {
         }
     }
 }
-
-impl ForeignFrom<api_enums::RoutableConnectors> for dsl_enums::Connector {
-    fn foreign_from(from: api_enums::RoutableConnectors) -> Self {
-        match from {
-            #[cfg(feature = "dummy_connector")]
-            api_enums::RoutableConnectors::DummyConnector1 => Self::DummyConnector1,
-            #[cfg(feature = "dummy_connector")]
-            api_enums::RoutableConnectors::DummyConnector2 => Self::DummyConnector2,
-            #[cfg(feature = "dummy_connector")]
-            api_enums::RoutableConnectors::DummyConnector3 => Self::DummyConnector3,
-            #[cfg(feature = "dummy_connector")]
-            api_enums::RoutableConnectors::DummyConnector4 => Self::DummyConnector4,
-            #[cfg(feature = "dummy_connector")]
-            api_enums::RoutableConnectors::DummyConnector5 => Self::DummyConnector5,
-            #[cfg(feature = "dummy_connector")]
-            api_enums::RoutableConnectors::DummyConnector6 => Self::DummyConnector6,
-            #[cfg(feature = "dummy_connector")]
-            api_enums::RoutableConnectors::DummyConnector7 => Self::DummyConnector7,
-            api_enums::RoutableConnectors::Aci => Self::Aci,
-            api_enums::RoutableConnectors::Adyen => Self::Adyen,
-            api_enums::RoutableConnectors::Airwallex => Self::Airwallex,
-            api_enums::RoutableConnectors::Authorizedotnet => Self::Authorizedotnet,
-            api_enums::RoutableConnectors::Bambora => Self::Bambora,
-            api_enums::RoutableConnectors::Bankofamerica => Self::Bankofamerica,
-            api_enums::RoutableConnectors::Bitpay => Self::Bitpay,
-            api_enums::RoutableConnectors::Bluesnap => Self::Bluesnap,
-            api_enums::RoutableConnectors::Boku => Self::Boku,
-            api_enums::RoutableConnectors::Braintree => Self::Braintree,
-            api_enums::RoutableConnectors::Cashtocode => Self::Cashtocode,
-            api_enums::RoutableConnectors::Checkout => Self::Checkout,
-            api_enums::RoutableConnectors::Coinbase => Self::Coinbase,
-            api_enums::RoutableConnectors::Cryptopay => Self::Cryptopay,
-            api_enums::RoutableConnectors::Cybersource => Self::Cybersource,
-            api_enums::RoutableConnectors::Dlocal => Self::Dlocal,
-            api_enums::RoutableConnectors::Fiserv => Self::Fiserv,
-            api_enums::RoutableConnectors::Forte => Self::Forte,
-            api_enums::RoutableConnectors::Globalpay => Self::Globalpay,
-            api_enums::RoutableConnectors::Globepay => Self::Globepay,
-            api_enums::RoutableConnectors::Gocardless => Self::Gocardless,
-            api_enums::RoutableConnectors::Helcim => Self::Helcim,
-            api_enums::RoutableConnectors::Iatapay => Self::Iatapay,
-            api_enums::RoutableConnectors::Klarna => Self::Klarna,
-            api_enums::RoutableConnectors::Mollie => Self::Mollie,
-            api_enums::RoutableConnectors::Multisafepay => Self::Multisafepay,
-            api_enums::RoutableConnectors::Nexinets => Self::Nexinets,
-            api_enums::RoutableConnectors::Nmi => Self::Nmi,
-            api_enums::RoutableConnectors::Noon => Self::Noon,
-            api_enums::RoutableConnectors::Nuvei => Self::Nuvei,
-            api_enums::RoutableConnectors::Opennode => Self::Opennode,
-            api_enums::RoutableConnectors::Payme => Self::Payme,
-            api_enums::RoutableConnectors::Paypal => Self::Paypal,
-            api_enums::RoutableConnectors::Payu => Self::Payu,
-            api_enums::RoutableConnectors::Powertranz => Self::Powertranz,
-            api_enums::RoutableConnectors::Prophetpay => Self::Prophetpay,
-            api_enums::RoutableConnectors::Rapyd => Self::Rapyd,
-            api_enums::RoutableConnectors::Shift4 => Self::Shift4,
-            api_enums::RoutableConnectors::Square => Self::Square,
-            api_enums::RoutableConnectors::Stax => Self::Stax,
-            api_enums::RoutableConnectors::Stripe => Self::Stripe,
-            api_enums::RoutableConnectors::Trustpay => Self::Trustpay,
-            api_enums::RoutableConnectors::Tsys => Self::Tsys,
-            api_enums::RoutableConnectors::Volt => Self::Volt,
-            api_enums::RoutableConnectors::Wise => Self::Wise,
-            api_enums::RoutableConnectors::Worldline => Self::Worldline,
-            api_enums::RoutableConnectors::Worldpay => Self::Worldpay,
-            api_enums::RoutableConnectors::Zen => Self::Zen,
-        }
-    }
-}
diff --git a/crates/router/src/types/transformers.rs b/crates/router/src/types/transformers.rs
index 45aad93371e..66a8ba7936d 100644
--- a/crates/router/src/types/transformers.rs
+++ b/crates/router/src/types/transformers.rs
@@ -9,7 +9,6 @@ use common_utils::{
 };
 use diesel_models::enums as storage_enums;
 use error_stack::{IntoReport, ResultExt};
-use euclid::enums as dsl_enums;
 use masking::{ExposeInterface, PeekInterface};
 
 use super::domain;
@@ -174,25 +173,11 @@ impl ForeignFrom<storage_enums::MandateDataType> for api_models::payments::Manda
     }
 }
 
-impl ForeignTryFrom<api_enums::Connector> for api_enums::RoutableConnectors {
+impl ForeignTryFrom<api_enums::Connector> for common_enums::RoutableConnectors {
     type Error = error_stack::Report<common_utils::errors::ValidationError>;
 
     fn foreign_try_from(from: api_enums::Connector) -> Result<Self, Self::Error> {
         Ok(match from {
-            #[cfg(feature = "dummy_connector")]
-            api_enums::Connector::DummyConnector1 => Self::DummyConnector1,
-            #[cfg(feature = "dummy_connector")]
-            api_enums::Connector::DummyConnector2 => Self::DummyConnector2,
-            #[cfg(feature = "dummy_connector")]
-            api_enums::Connector::DummyConnector3 => Self::DummyConnector3,
-            #[cfg(feature = "dummy_connector")]
-            api_enums::Connector::DummyConnector4 => Self::DummyConnector4,
-            #[cfg(feature = "dummy_connector")]
-            api_enums::Connector::DummyConnector5 => Self::DummyConnector5,
-            #[cfg(feature = "dummy_connector")]
-            api_enums::Connector::DummyConnector6 => Self::DummyConnector6,
-            #[cfg(feature = "dummy_connector")]
-            api_enums::Connector::DummyConnector7 => Self::DummyConnector7,
             api_enums::Connector::Aci => Self::Aci,
             api_enums::Connector::Adyen => Self::Adyen,
             api_enums::Connector::Airwallex => Self::Airwallex,
@@ -253,76 +238,21 @@ impl ForeignTryFrom<api_enums::Connector> for api_enums::RoutableConnectors {
             api_enums::Connector::Worldline => Self::Worldline,
             api_enums::Connector::Worldpay => Self::Worldpay,
             api_enums::Connector::Zen => Self::Zen,
-        })
-    }
-}
-
-impl ForeignFrom<dsl_enums::Connector> for api_enums::RoutableConnectors {
-    fn foreign_from(from: dsl_enums::Connector) -> Self {
-        match from {
             #[cfg(feature = "dummy_connector")]
-            dsl_enums::Connector::DummyConnector1 => Self::DummyConnector1,
+            api_enums::Connector::DummyConnector1 => Self::DummyConnector1,
             #[cfg(feature = "dummy_connector")]
-            dsl_enums::Connector::DummyConnector2 => Self::DummyConnector2,
+            api_enums::Connector::DummyConnector2 => Self::DummyConnector2,
             #[cfg(feature = "dummy_connector")]
-            dsl_enums::Connector::DummyConnector3 => Self::DummyConnector3,
+            api_enums::Connector::DummyConnector3 => Self::DummyConnector3,
             #[cfg(feature = "dummy_connector")]
-            dsl_enums::Connector::DummyConnector4 => Self::DummyConnector4,
+            api_enums::Connector::DummyConnector4 => Self::DummyConnector4,
             #[cfg(feature = "dummy_connector")]
-            dsl_enums::Connector::DummyConnector5 => Self::DummyConnector5,
+            api_enums::Connector::DummyConnector5 => Self::DummyConnector5,
             #[cfg(feature = "dummy_connector")]
-            dsl_enums::Connector::DummyConnector6 => Self::DummyConnector6,
+            api_enums::Connector::DummyConnector6 => Self::DummyConnector6,
             #[cfg(feature = "dummy_connector")]
-            dsl_enums::Connector::DummyConnector7 => Self::DummyConnector7,
-            dsl_enums::Connector::Aci => Self::Aci,
-            dsl_enums::Connector::Adyen => Self::Adyen,
-            dsl_enums::Connector::Airwallex => Self::Airwallex,
-            dsl_enums::Connector::Authorizedotnet => Self::Authorizedotnet,
-            dsl_enums::Connector::Bambora => Self::Bambora,
-            dsl_enums::Connector::Bankofamerica => Self::Bankofamerica,
-            dsl_enums::Connector::Bitpay => Self::Bitpay,
-            dsl_enums::Connector::Bluesnap => Self::Bluesnap,
-            dsl_enums::Connector::Boku => Self::Boku,
-            dsl_enums::Connector::Braintree => Self::Braintree,
-            dsl_enums::Connector::Cashtocode => Self::Cashtocode,
-            dsl_enums::Connector::Checkout => Self::Checkout,
-            dsl_enums::Connector::Coinbase => Self::Coinbase,
-            dsl_enums::Connector::Cryptopay => Self::Cryptopay,
-            dsl_enums::Connector::Cybersource => Self::Cybersource,
-            dsl_enums::Connector::Dlocal => Self::Dlocal,
-            dsl_enums::Connector::Fiserv => Self::Fiserv,
-            dsl_enums::Connector::Forte => Self::Forte,
-            dsl_enums::Connector::Globalpay => Self::Globalpay,
-            dsl_enums::Connector::Globepay => Self::Globepay,
-            dsl_enums::Connector::Gocardless => Self::Gocardless,
-            dsl_enums::Connector::Helcim => Self::Helcim,
-            dsl_enums::Connector::Iatapay => Self::Iatapay,
-            dsl_enums::Connector::Klarna => Self::Klarna,
-            dsl_enums::Connector::Mollie => Self::Mollie,
-            dsl_enums::Connector::Multisafepay => Self::Multisafepay,
-            dsl_enums::Connector::Nexinets => Self::Nexinets,
-            dsl_enums::Connector::Nmi => Self::Nmi,
-            dsl_enums::Connector::Noon => Self::Noon,
-            dsl_enums::Connector::Nuvei => Self::Nuvei,
-            dsl_enums::Connector::Opennode => Self::Opennode,
-            dsl_enums::Connector::Payme => Self::Payme,
-            dsl_enums::Connector::Paypal => Self::Paypal,
-            dsl_enums::Connector::Payu => Self::Payu,
-            dsl_enums::Connector::Powertranz => Self::Powertranz,
-            dsl_enums::Connector::Prophetpay => Self::Prophetpay,
-            dsl_enums::Connector::Rapyd => Self::Rapyd,
-            dsl_enums::Connector::Shift4 => Self::Shift4,
-            dsl_enums::Connector::Square => Self::Square,
-            dsl_enums::Connector::Stax => Self::Stax,
-            dsl_enums::Connector::Stripe => Self::Stripe,
-            dsl_enums::Connector::Trustpay => Self::Trustpay,
-            dsl_enums::Connector::Tsys => Self::Tsys,
-            dsl_enums::Connector::Volt => Self::Volt,
-            dsl_enums::Connector::Wise => Self::Wise,
-            dsl_enums::Connector::Worldline => Self::Worldline,
-            dsl_enums::Connector::Worldpay => Self::Worldpay,
-            dsl_enums::Connector::Zen => Self::Zen,
-        }
+            api_enums::Connector::DummyConnector7 => Self::DummyConnector7,
+        })
     }
 }
 
diff --git a/scripts/add_connector.sh b/scripts/add_connector.sh
index 9a30fe9d757..7ed5e65151e 100755
--- a/scripts/add_connector.sh
+++ b/scripts/add_connector.sh
@@ -45,7 +45,7 @@ cd $SCRIPT/..
 
 # Remove template files if already created for this connector
 rm -rf $conn/$payment_gateway $conn/$payment_gateway.rs
-git checkout $conn.rs $src/types/api.rs $src/configs/settings.rs config/development.toml config/docker_compose.toml config/config.example.toml loadtest/config/development.toml crates/api_models/src/enums.rs crates/euclid/src/enums.rs crates/api_models/src/routing.rs $src/core/payments/flows.rs $src/core/admin.rs $src/core/payments/routing/transformers.rs $src/types/transformers.rs
+git checkout $conn.rs $src/types/api.rs $src/configs/settings.rs config/development.toml config/docker_compose.toml config/config.example.toml loadtest/config/development.toml crates/api_models/src/enums.rs crates/euclid/src/enums.rs crates/api_models/src/routing.rs $src/core/payments/flows.rs crates/common_enums/src/enums.rs $src/types/transformers.rs $src/core/admin.rs
 
 # Add enum for this connector in required places
 previous_connector=''
@@ -61,14 +61,12 @@ sed  -r -i'' -e "s/\"$previous_connector\",/\"$previous_connector\",\n    \"${pa
 sed -i '' -e "s/\(pub enum Connector {\)/\1\n\t${payment_gateway_camelcase},/" crates/api_models/src/enums.rs
 sed -i '' -e "s/\(pub enum Connector {\)/\1\n\t${payment_gateway_camelcase},/" crates/euclid/src/enums.rs
 sed -i '' -e "s/\(match connector_name {\)/\1\n\t\tapi_enums::Connector::${payment_gateway_camelcase} => {${payment_gateway}::transformers::${payment_gateway_camelcase}AuthType::try_from(val)?;Ok(())}/" $src/core/admin.rs
-sed -i'' -e "s|$previous_connector_camelcase \(.*\)|$previous_connector_camelcase \1\n\t\t\tapi_enums::RoutableConnectors::${payment_gateway_camelcase} => Self::${payment_gateway_camelcase},|" $src/core/payments/routing/transformers.rs
-sed -i'' -e "s|dsl_enums::Connector::$previous_connector_camelcase \(.*\)|dsl_enums::Connector::$previous_connector_camelcase \1\n\t\t\tdsl_enums::Connector::${payment_gateway_camelcase} => Self::${payment_gateway_camelcase},|" $src/types/transformers.rs
-sed -i'' -e "s|api_enums::Connector::$previous_connector_camelcase \(.*\)|api_enums::Connector::$previous_connector_camelcase \1\n\t\t\tapi_enums::Connector::${payment_gateway_camelcase} => Self::${payment_gateway_camelcase},|" $src/types/transformers.rs
-sed -i'' -e "s/\(pub enum RoutableConnectors {\)/\1\n\t${payment_gateway_camelcase},/" crates/api_models/src/enums.rs
+sed -i'' -e "s/\(pub enum RoutableConnectors {\)/\1\n\t${payment_gateway_camelcase},/" crates/common_enums/src/enums.rs
+sed -i'' -e "s|$previous_connector_camelcase \(.*\)|$previous_connector_camelcase \1\n\t\t\tapi_enums::Connector::${payment_gateway_camelcase} => Self::${payment_gateway_camelcase},|" $src/types/transformers.rs
 sed -i'' -e "s/^default_imp_for_\(.*\)/default_imp_for_\1\n\tconnector::${payment_gateway_camelcase},/" $src/core/payments/flows.rs
 
 # Remove temporary files created in above step
-rm $conn.rs-e $src/types/api.rs-e $src/configs/settings.rs-e config/development.toml-e config/docker_compose.toml-e config/config.example.toml-e loadtest/config/development.toml-e crates/api_models/src/enums.rs-e crates/euclid/src/enums.rs-e crates/api_models/src/routing.rs-e $src/core/payments/flows.rs-e $src/core/admin.rs-e $src/core/payments/routing/transformers.rs-e $src/types/transformers.rs-e
+rm $conn.rs-e $src/types/api.rs-e $src/configs/settings.rs-e config/development.toml-e config/docker_compose.toml-e config/config.example.toml-e loadtest/config/development.toml-e crates/api_models/src/enums.rs-e crates/euclid/src/enums.rs-e crates/api_models/src/routing.rs-e $src/core/payments/flows.rs-e crates/common_enums/src/enums.rs-e $src/types/transformers.rs-e $src/core/admin.rs-e
 cd $conn/
 
 # Generate template files for the connector

## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [ ] Enhancement
- [x] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
<!-- Describe your changes in detail -->
This PR have 2 changes 
1)Transferring routable connectors to shared enums will reduce the redundancy associated with employing Euclid enums.
2)fixing connector code template script 

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!--
Provide links to the files with corresponding changes.

Following are the paths where you can find config files:
1. `config`
2. `crates/router/src/configs`
3. `loadtest/config`
-->


## Motivation and Context
<!--
Why is this change required? What problem does it solve?
If it fixes an open issue, please link to the issue here.

If you don't have an issue, we'd recommend starting with one first so the PR
can focus on the implementation (unless it is an obvious bug or documentation fix
that will have little conversation).
-->
This PR have 2 changes 
1)Transferring routable connectors to shared enums will reduce the redundancy associated with employing Euclid enums.
2)fixing connector code template script 

## How did you test it?
<!--
Did you write an integration/unit/API test to verify the code changes?
Or did you test this change manually (provide relevant screenshots)?
-->
By running `cargo clippy --all-features --all-targets`

## Checklist
<!-- Put an `x` in the boxes that apply -->

- [x] I formatted the code `cargo +nightly fmt --all`
- [x] I addressed lints thrown by `cargo clippy`
- [x] I reviewed the submitted code
- [ ] I added unit tests for my changes where possible
- [ ] I added a [CHANGELOG](/CHANGELOG.md) entry if applicable
