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)