diff --git a/Detector/MagneticFieldMap/CMakeLists.txt b/Detector/MagneticFieldMap/CMakeLists.txt
index 4d5e608e6de9b806738a9cc018e728b6e8a3e3f3..ac154c8ae17f339802d26b7a1e5f638a87c62542 100644
--- a/Detector/MagneticFieldMap/CMakeLists.txt
+++ b/Detector/MagneticFieldMap/CMakeLists.txt
@@ -4,6 +4,7 @@
 
 gaudi_add_module(MagneticFieldMap
                  SOURCES src/GenericBFieldMapBrBz.cpp
+                         src/GenericBFieldMapBrBzFactory.cpp
                  LINK Gaudi::GaudiKernel
                       ${DD4hep_COMPONENT_LIBRARIES}
                       ${ROOT_LIBRARIES}
diff --git a/Detector/MagneticFieldMap/src/GenericBFieldMapBrBzFactory.cpp b/Detector/MagneticFieldMap/src/GenericBFieldMapBrBzFactory.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..897d360a5b6fe64a87c03098c3157ea05e24173e
--- /dev/null
+++ b/Detector/MagneticFieldMap/src/GenericBFieldMapBrBzFactory.cpp
@@ -0,0 +1,39 @@
+/*
+ * In this file, the xml is parsed and the GenericBFieldMapBrBz object is created and configured.
+ *
+ * -- Tao Lin <lintao AT ihep.ac.cn>
+ */
+#include "GenericBFieldMapBrBz.h"
+
+
+#include <DD4hep/Version.h>
+#if DD4HEP_VERSION_GE(0,24)
+#include <DD4hep/detail/Handle.inl>
+#else
+#include <DD4hep/Handle.inl>
+#endif
+
+#include <DD4hep/FieldTypes.h>
+
+
+#include <DD4hep/DetFactoryHelper.h>
+#include <XML/Utilities.h>
+
+
+static dd4hep::Ref_t create_GenericBFieldMapBrBz(dd4hep::Detector& , 
+                                                 dd4hep::xml::Handle_t handle ) {
+
+    // 1. retrieve the parameters from xml
+    dd4hep::xml::Component xmlParameter(handle);
+
+    // 2. create the CartesianField
+    dd4hep::CartesianField obj;
+    GenericBFieldMapBrBz* ptr = new GenericBFieldMapBrBz();
+
+    obj.assign(ptr, xmlParameter.nameStr(), xmlParameter.typeStr());
+
+    return obj;
+
+}
+
+DECLARE_XMLELEMENT(GenericBFieldMapBrBz,create_GenericBFieldMapBrBz)