diff --git a/cmds/st.cmd b/cmds/st.cmd
index d3f2b18cd6a75143070279085d796b03d6ad31ec..9020df6b477844e98e67a2543672c8b1f2a3eafb 100644
--- a/cmds/st.cmd
+++ b/cmds/st.cmd
@@ -2,7 +2,7 @@ require vmmTbl
 
 epicsEnvSet("IPADDR", "192.168.50.2")
 epicsEnvSet("IPPORT", "65535")
-epicsEnvSet("P", "LAB-B02:")
+epicsEnvSet("P", "LAB-Marco:")
 epicsEnvSet("DIS", "NDet-")
 epicsEnvSet("RMM-DEV", "$(DIS)RMM-001:")
 
@@ -14,9 +14,6 @@ drvAsynIPPortConfigure("L0", "$(IPADDR):$(IPPORT) UDP", 0, 0, 1)
 
 RMMConfig("RMM", "$(IPADDR)", "$(IPPORT)", "$(E3_CMD_TOP)/config_file/lab_testbed.json")
 
-#VMMTblConfig("RMM portName", "VMMPortName", ring, number_hybrids)
-VMMTblConfig("RMM", "VMM", 0, 2)
-
 epicsEnvSet("VMM-DEV", "$(DIS)VMM-")
 epicsEnvSet("HYB-DEV", "$(DIS)VMMHYB-")
 epicsEnvSet("VMM3A-DEV", "$(DIS)VMM3A-")
@@ -26,22 +23,59 @@ dbLoadRecords($(rmm_DB)/rmm.db, "P=$(P), R=$(RMM-DEV), PORT=RMM, ADDR=0, TIMEOUT
 dbLoadRecords($(rmm_DB)/rmm_sensors.db, "P=$(P), R=$(RMM-DEV), PORT=RMM, ADDR=0, TIMEOUT=1")
 dbLoadRecords($(rmm_DB)/ring.db, "P=$(P), R=$(RMM-DEV), ADDR=0, PORT=RMM, ADDR=0, TIMEOUT=1")
 
-dbLoadRecords("$(rmm_DB)/rmm_packets.template", "P=$(P), R=$(RMM-DEV), PORT=RMM, RING=0, NODE=0, ADDR=0, TIMEOUT=1")
-dbLoadRecords("$(rmm_DB)/topology.template", "P=$(P), R=$(RMM-DEV), PORT=RMM, RING=0, NODE=0, ADDR=0, TIMEOUT=1")
+############## Global configurations
+
+epicsEnvSet("Glob", "G:")
+dbLoadRecords("$(vmmTbl_DB)/vmm-fen-global.db", "P=$(P), R=$(VMM-DEV)$(Glob)")
+dbLoadRecords("$(vmmTbl_DB)/hyb-global.db", "P=$(P), R=$(VMM-DEV)$(Glob)")
+dbLoadRecords("$(vmmTbl_DB)/channels-global.db", "P=$(P), R=$(VMM-DEV)$(Glob), PORT=VMM0, ADDR=0, TIMEOUT=1")
+
+############## Particular rings
 
 epicsEnvSet("RING", "00")
+epicsEnvSet("RING-1-DIGIT", "0")
+epicsEnvSet("PORT", "VMM0")
+epicsEnvSet("R-VMM", "$(VMM-DEV)$(RING):")
+epicsEnvSet("R-VMM0", "$(R-VMM)")
+epicsEnvSet("R-HYB", "$(HYB-DEV)$(RING)")
+epicsEnvSet("R-VMM3A", "$(VMM3A-DEV)$(RING)")
+< ./vmm.cmd
+
+epicsEnvSet("RING", "01")
+epicsEnvSet("RING-1-DIGIT", "1")
+epicsEnvSet("PORT", "VMM1")
+epicsEnvSet("R-VMM", "$(VMM-DEV)$(RING):")
+epicsEnvSet("R-VMM1", "$(R-VMM)")
+epicsEnvSet("R-HYB", "$(HYB-DEV)$(RING)")
+epicsEnvSet("R-VMM3A", "$(VMM3A-DEV)$(RING)")
+< ./vmm.cmd
+
+epicsEnvSet("RING", "02")
+epicsEnvSet("RING-1-DIGIT", "2")
+epicsEnvSet("PORT", "VMM2")
+epicsEnvSet("R-VMM", "$(VMM-DEV)$(RING):")
+epicsEnvSet("R-VMM2", "$(R-VMM)")
+epicsEnvSet("R-HYB", "$(HYB-DEV)$(RING)")
+epicsEnvSet("R-VMM3A", "$(VMM3A-DEV)$(RING)")
+< ./vmm.cmd
+
+epicsEnvSet("RING", "03")
+epicsEnvSet("RING-1-DIGIT", "3")
+epicsEnvSet("PORT", "VMM3")
+epicsEnvSet("R-VMM", "$(VMM-DEV)$(RING):")
+epicsEnvSet("R-VMM3", "$(R-VMM)")
+epicsEnvSet("R-HYB", "$(HYB-DEV)$(RING)")
+epicsEnvSet("R-VMM3A", "$(VMM3A-DEV)$(RING)")
+< ./vmm.cmd
+
+epicsEnvSet("RING", "04")
+epicsEnvSet("RING-1-DIGIT", "4")
+epicsEnvSet("PORT", "VMM4")
 epicsEnvSet("R-VMM", "$(VMM-DEV)$(RING):")
-                                                  # R = NDet-VMM-<RingNumber#2>:
-dbLoadRecords("$(vmmTbl_DB)/vmm_tbl.db", "P=$(P), R=$(R-VMM), PORT=VMM, RING=0, NODE=0, ADDR=0, TIMEOUT=1")
-                                                  # 'R' = NDet-VMM-<RingNumber#2><HybNumber#1>:
-dbLoadRecords("$(vmmTbl_DB)/hybrid.db", "P=$(P), R=$(HYB-DEV)$(RING), VMMPREFIX=$(P)$(R-VMM), PORT=VMM, HYB=0, ADDR=0, TIMEOUT=1")
-dbLoadRecords("$(vmmTbl_DB)/hybrid.db", "P=$(P), R=$(HYB-DEV)$(RING), VMMPREFIX=$(P)$(R-VMM), PORT=VMM, HYB=1, ADDR=0, TIMEOUT=1")
-
-                                                   # 'R' = NDet-VMM-<RingNumber#2><HybNumber#1><VmmNumber#1>
-dbLoadRecords("$(vmmTbl_DB)/channels.db", "P=$(P), R=$(VMM3A-DEV)$(RING), VMMPREFIX=$(P)$(R-VMM), HYBR=$(HYB-DEV)$(RING), HYB=0, VMM=0, C=:, PORT=VMM, ADDR=0, TIMEOUT=1")
-dbLoadRecords("$(vmmTbl_DB)/channels.db", "P=$(P), R=$(VMM3A-DEV)$(RING), VMMPREFIX=$(P)$(R-VMM), HYBR=$(HYB-DEV)$(RING), HYB=0, VMM=1, C=:, PORT=VMM, ADDR=0, TIMEOUT=1")
-dbLoadRecords("$(vmmTbl_DB)/channels.db", "P=$(P), R=$(VMM3A-DEV)$(RING), VMMPREFIX=$(P)$(R-VMM), HYBR=$(HYB-DEV)$(RING), HYB=1, VMM=0, C=:, PORT=VMM, ADDR=0, TIMEOUT=1")
-dbLoadRecords("$(vmmTbl_DB)/channels.db", "P=$(P), R=$(VMM3A-DEV)$(RING), VMMPREFIX=$(P)$(R-VMM), HYBR=$(HYB-DEV)$(RING), HYB=1, VMM=1, C=:, PORT=VMM, ADDR=0, TIMEOUT=1")
+epicsEnvSet("R-VMM4", "$(R-VMM)")
+epicsEnvSet("R-HYB", "$(HYB-DEV)$(RING)")
+epicsEnvSet("R-VMM3A", "$(VMM3A-DEV)$(RING)")
+< ./vmm.cmd
 
 iocInit()
 
diff --git a/cmds/vmm.cmd b/cmds/vmm.cmd
new file mode 100644
index 0000000000000000000000000000000000000000..701bc932a585c620924067799d8b448560a5b9cc
--- /dev/null
+++ b/cmds/vmm.cmd
@@ -0,0 +1,13 @@
+dbLoadRecords("$(rmm_DB)/rmm_packets.template", "P=$(P), R=$(RMM-DEV), PORT=RMM, RING=$(RING-1-DIGIT), NODE=0, ADDR=0, TIMEOUT=1")
+dbLoadRecords("$(rmm_DB)/topology.template", "P=$(P), R=$(RMM-DEV), PORT=RMM, RING=$(RING-1-DIGIT), NODE=0, ADDR=0, TIMEOUT=1")
+
+#VMMTblConfig("RMM portName", "VMMPortName", ring, number_hybrids)
+VMMTblConfig("RMM", "$(PORT)", "$(RING-1-DIGIT)", 5)
+
+                                                  # R = NDet-VMM-<RingNumber#2>:
+dbLoadRecords("$(vmmTbl_DB)/vmm_tbl.db", "P=$(P), R=$(R-VMM), Glob=$(VMM-DEV)$(Glob), PORT=$(PORT), RING=$(RING), NODE=0, ADDR=0, TIMEOUT=1")
+                                                  # 'R' = NDet-VMM-<RingNumber#2><HybNumber#1>:
+dbLoadRecords("$(vmmTbl_DB)/hybrid.db", "P=$(P), R=$(R-HYB), Glob=$(VMM-DEV)$(Glob), VMMPREFIX=$(P)$(R-VMM), PORT=$(PORT), ADDR=0, TIMEOUT=1")
+
+                                                   # 'R' = NDet-VMM-<RingNumber#2><HybNumber#1><VmmNumber#1>
+dbLoadRecords("$(vmmTbl_DB)/channels.db", "P=$(P), R=$(R-VMM3A), Glob=$(VMM-DEV)$(Glob), VMMPREFIX=$(P)$(R-VMM), HYBR=$(R-HYB), C=:, PORT=$(PORT), ADDR=0, TIMEOUT=1")
diff --git a/vmmTbl.Makefile b/vmmTbl.Makefile
index 4654223b737786a2eea95dd586d164d52cd035dc..d13e476de942fbf5b8027f3971b986d114d2d5e9 100644
--- a/vmmTbl.Makefile
+++ b/vmmTbl.Makefile
@@ -7,9 +7,12 @@ APP:=vmmTblApp
 APPDB:=$(APP)/Db
 APPSRC:=$(APP)/src
 
-TMPS += $(APPDB)/hybrid.template
 TMPS += $(APPDB)/vmm_tbl.template
+TMPS += $(APPDB)/vmm-fen-global.template
+TMPS += $(APPDB)/hyb-global.template
 SUBS = $(APPDB)/channels.sub
+SUBS += $(APPDB)/hybrid.sub
+SUBS += $(APPDB)/channels-global.sub
 
 LIB_SYS_LIBS += vmmapi
 
diff --git a/vmmTblApp/Db/channels-global.sub b/vmmTblApp/Db/channels-global.sub
new file mode 100644
index 0000000000000000000000000000000000000000..716e0f50b55df2a552e0278ffa0895d2bd0218cc
--- /dev/null
+++ b/vmmTblApp/Db/channels-global.sub
@@ -0,0 +1,20 @@
+file vmm-global.template {
+    pattern {CH}
+    {"SD"}
+}
+
+file channels-global.template {
+    pattern {CH}
+    { "ST" }
+    { "SC" }
+    { "SL" }
+    { "SM" }
+    { "STH" }
+    { "SMX" }
+    { "ST" }
+    { "SC" }
+    { "SL" }
+    { "SM" }
+    { "STH" }
+    { "SMX" }
+}
\ No newline at end of file
diff --git a/vmmTblApp/Db/channels-global.template b/vmmTblApp/Db/channels-global.template
new file mode 100644
index 0000000000000000000000000000000000000000..53686f7c8366579657f15baed3ae8069fcff763f
--- /dev/null
+++ b/vmmTblApp/Db/channels-global.template
@@ -0,0 +1,56 @@
+record(aao, "$(P)$(R)$(CH)-S") {
+    field(DESC, "Set $(CH) channels array (millivolt)")
+    field(NELM, "64")
+    field(FTVL, "CHAR")
+}
+
+record(bo, "$(P)$(R)All$(CH)-S") {
+    field(DESC, "Set all $(CH) channels for all VMMs")
+}
+
+record(acalcout, "$(P)$(R)#All$(CH)-S") {
+    field(NELM, "64")
+    field(OOPT, "On Change")
+    field(CALC, "A")
+    field(INPA, "$(P)$(R)All$(CH)-S CPP")
+    field(INAA, "$(P)$(R)$(CH)-S")
+    field(OUT,  "$(P)$(R)$(CH)-S PP")
+}
+
+record(aao, "$(P)$(R)V1$(CH)-S") {
+    field(DESC, "Set $(CH) channels array (millivolt)")
+    field(NELM, "64")
+    field(FTVL, "CHAR")
+}
+
+record(bo, "$(P)$(R)V1All$(CH)-S") {
+    field(DESC, "Set all $(CH) channels for all VMMs")
+}
+
+record(acalcout, "$(P)$(R)V1#All$(CH)-S") {
+    field(NELM, "64")
+    field(OOPT, "On Change")
+    field(CALC, "A")
+    field(INPA, "$(P)$(R)V1All$(CH)-S CPP")
+    field(INAA, "$(P)$(R)V1$(CH)-S")
+    field(OUT,  "$(P)$(R)V1$(CH)-S PP")
+}
+
+record(aao, "$(P)$(R)V0$(CH)-S") {
+    field(DESC, "Set $(CH) channels array (millivolt)")
+    field(NELM, "64")
+    field(FTVL, "CHAR")
+}
+
+record(bo, "$(P)$(R)V0All$(CH)-S") {
+    field(DESC, "Set all $(CH) channels for all VMMs")
+}
+
+record(acalcout, "$(P)$(R)V0#All$(CH)-S") {
+    field(NELM, "64")
+    field(OOPT, "On Change")
+    field(CALC, "A")
+    field(INPA, "$(P)$(R)V0All$(CH)-S CPP")
+    field(INAA, "$(P)$(R)V0$(CH)-S")
+    field(OUT,  "$(P)$(R)V0$(CH)-S PP")
+}
\ No newline at end of file
diff --git a/vmmTblApp/Db/channels.sub b/vmmTblApp/Db/channels.sub
index 4b4cb394408b945640ecaaa07deef8549d76ec32..a2035e0f75d247bb08d4b257eea584f69b4eaca3 100644
--- a/vmmTblApp/Db/channels.sub
+++ b/vmmTblApp/Db/channels.sub
@@ -1,14 +1,85 @@
 file channels.template {
-pattern { CH }
-        { "ST" }
-        { "SC" }
-        { "SL" }
-        { "SM" }
-        { "STH" }
-        { "SMX" }
+pattern { CH, HYB, VMM }
+        { "ST",  "0", "0" }
+        { "SC",  "0", "0" }
+        { "SL",  "0", "0" }
+        { "SM",  "0", "0" }
+        { "STH", "0", "0" }
+        { "SMX", "0", "0" }
+        { "ST",  "0", "1" }
+        { "SC",  "0", "1" }
+        { "SL",  "0", "1" }
+        { "SM",  "0", "1" }
+        { "STH", "0", "1" }
+        { "SMX", "0", "1" }
+
+        { "ST",  "1", "0" }
+        { "SC",  "1", "0" }
+        { "SL",  "1", "0" }
+        { "SM",  "1", "0" }
+        { "STH", "1", "0" }
+        { "SMX", "1", "0" }
+        { "ST",  "1", "1" }
+        { "SC",  "1", "1" }
+        { "SL",  "1", "1" }
+        { "SM",  "1", "1" }
+        { "STH", "1", "1" }
+        { "SMX", "1", "1" }
+
+        { "ST",  "2", "0" }
+        { "SC",  "2", "0" }
+        { "SL",  "2", "0" }
+        { "SM",  "2", "0" }
+        { "STH", "2", "0" }
+        { "SMX", "2", "0" }
+        { "ST",  "2", "1" }
+        { "SC",  "2", "1" }
+        { "SL",  "2", "1" }
+        { "SM",  "2", "1" }
+        { "STH", "2", "1" }
+        { "SMX", "2", "1" }
+
+        { "ST",  "3", "0" }
+        { "SC",  "3", "0" }
+        { "SL",  "3", "0" }
+        { "SM",  "3", "0" }
+        { "STH", "3", "0" }
+        { "SMX", "3", "0" }
+        { "ST",  "3", "1" }
+        { "SC",  "3", "1" }
+        { "SL",  "3", "1" }
+        { "SM",  "3", "1" }
+        { "STH", "3", "1" }
+        { "SMX", "3", "1" }
+
+        { "ST",  "4", "0" }
+        { "SC",  "4", "0" }
+        { "SL",  "4", "0" }
+        { "SM",  "4", "0" }
+        { "STH", "4", "0" }
+        { "SMX", "4", "0" }
+        { "ST",  "4", "1" }
+        { "SC",  "4", "1" }
+        { "SL",  "4", "1" }
+        { "SM",  "4", "1" }
+        { "STH", "4", "1" }
+        { "SMX", "4", "1" }
 }
 
 file vmm.template { 
-pattern { CH }
-        { "SD" } 
+pattern { CH, HYB, VMM }
+        { "SD", "0", "0" }
+        { "SD", "0", "1" }
+
+        { "SD", "1", "0" }
+        { "SD", "1", "1" }
+
+        { "SD", "2", "0" }
+        { "SD", "2", "1" }
+
+        { "SD", "3", "0" }
+        { "SD", "3", "1" }
+
+        { "SD", "4", "0" }
+        { "SD", "4", "1" }
 }
\ No newline at end of file
diff --git a/vmmTblApp/Db/channels.template b/vmmTblApp/Db/channels.template
index dab00fe33d572bb708214b3898ce0b52a8c6374d..0551e5841cc44a740e392e464069c1e69031e6a2 100644
--- a/vmmTblApp/Db/channels.template
+++ b/vmmTblApp/Db/channels.template
@@ -4,6 +4,24 @@
 #     The aao record sets the register channel by channel.
 #     The bo record sets all channels at once.
 
+record(aao, "$(P)$(R)$(HYB)$(VMM)$(C)#$(CH)-S") {
+    field(DESC, "Set global channels array forwarder")
+    field(DOL,  "$(P)$(Glob)$(CH)-S CP")
+    field(OMSL, "closed_loop")
+    field(OUT,  "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-S CP")
+    field(NELM, "64")
+    field(FTVL, "CHAR")
+}
+
+record(aao, "$(P)$(R)$(HYB)$(VMM)$(C)##$(CH)-S") {
+    field(DESC, "Global channels forwarder for VMM $(VMM)")
+    field(DOL,  "$(P)$(Glob)V$(VMM)$(CH)-S CP")
+    field(OMSL, "closed_loop")
+    field(OUT,  "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-S CP")
+    field(NELM, "64")
+    field(FTVL, "CHAR")
+}
+
 record(aao, "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-S") {
     field(DESC, "Set $(CH) channels array")
     field(DTYP, "asynInt8ArrayOut")
diff --git a/vmmTblApp/Db/hyb-global.template b/vmmTblApp/Db/hyb-global.template
new file mode 100644
index 0000000000000000000000000000000000000000..24c605b4318ce5aa686a3b3ed8eb98cccfc3aa6d
--- /dev/null
+++ b/vmmTblApp/Db/hyb-global.template
@@ -0,0 +1,71 @@
+record(bo, "$(P)$(R)Enable-S") {
+    field(DESC, "Enable All hybrids")
+    field(PINI, "NO")
+    field(ZNAM, "Disable")
+    field(ONAM, "Enable")
+}
+
+record(mbbo, "$(P)$(R)Skew-S"){
+    field(DESC, "Global set Skew")
+    field(PINI, "NO")
+    field(ZRST, "0 ns")
+    field(ZRVL, "0")
+    field(ONST, "2.83921 ns")
+    field(ONVL, "1")
+    field(TWST, "5.67842 ns")
+    field(TWVL, "2")
+    field(THST, "8.51764 ns")
+    field(THVL, "3")
+    field(FRST, "11.3568 ns")
+    field(FRVL, "4")
+    field(FVST, "14.1961 ns")
+    field(FVVL, "5")
+    field(SXST, "17.0353 ns")
+    field(SXVL, "6")
+    field(SVST, "19.8545 ns")
+    field(SVVL, "7")
+    field(EIST, "22.7137 ns")
+    field(EIVL, "8")
+    field(NIST, "25.5529 ns")
+    field(NIVL, "9")
+    field(TEST, "28.3921 ns")
+    field(TEVL, "10")
+    field(ELST, "31.2313 ns")
+    field(ELVL, "11")
+    field(TVST, "34.0705 ns")
+    field(TVVL, "12")
+    field(TTST, "36.9098 ns")
+    field(TTVL, "13")
+    field(FTST, "39.749 ns")
+    field(FTVL, "14")
+    field(FFST, "42.5882 ns")
+    field(FFVL, "15")
+}
+
+record(mbbo, "$(P)$(R)Width-S"){
+    field(DESC, "Global set width")
+    field(PINI, "NO")
+    field(ZRST, "128 x 22.7137")
+    field(ZRVL, "0")
+    field(ONST, "64 x 22.7137")
+    field(ONVL, "1")
+    field(TWST, "32 x 22.7137")
+    field(TWVL, "2")
+    field(THST, "16 x 22.7137")
+    field(THVL, "3")
+    field(FRST, "8 x 22.7137")
+    field(FRVL, "4")
+    field(FVST, "4 x 22.7137")
+    field(FVVL, "5")
+    field(SXST, "2 x 22.7137")
+    field(SXVL, "6")
+    field(SVST, "1 x 22.7137")
+    field(SVVL, "7")
+}
+
+record(bo, "$(P)$(R)Pol-S") {
+    field(DESC, "Global set polarity")
+    field(PINI, "NO")
+    field(ZNAM, "positive")
+    field(ONAM, "negative")
+}
\ No newline at end of file
diff --git a/vmmTblApp/Db/hybrid.sub b/vmmTblApp/Db/hybrid.sub
new file mode 100644
index 0000000000000000000000000000000000000000..4f117577007fd1c37c4c8ece14a9803460d2ea03
--- /dev/null
+++ b/vmmTblApp/Db/hybrid.sub
@@ -0,0 +1,8 @@
+file hybrid.template {
+    pattern {HYB}
+    {"0"}
+    {"1"}
+    {"2"}
+    {"3"}
+    {"4"}
+}
\ No newline at end of file
diff --git a/vmmTblApp/Db/hybrid.template b/vmmTblApp/Db/hybrid.template
index dab8afc9847b2106498ec7be2f1bbba3a7212e3e..09c99d396e09407d1c66d9189270fc47093fadc5 100644
--- a/vmmTblApp/Db/hybrid.template
+++ b/vmmTblApp/Db/hybrid.template
@@ -6,6 +6,13 @@ record(stringin, "$(P)$(R)$(HYB):FwVersion-R") {
     field(SCAN, "I/O Intr")
 }
 
+record(bo, "$(P)$(R)$(HYB):#Enable-S") {
+    field(DESC, "Global enable PV forwarder")
+    field(DOL,  "$(P)$(Glob)Enable-S CP")
+    field(OMSL, "closed_loop")
+    field(OUT, "$(P)$(R)$(HYB):Enable-S CP")
+}
+
 record(bo, "$(P)$(R)$(HYB):Enable-S") {
     field(DESC, "Enable hybrid")
     field(DTYP, "asynInt32")
@@ -33,6 +40,45 @@ record(calc, "$(P)$(R)$(HYB):#CalcDISA") {
     field(CALC, "( (A = 0)||(B # 4)||(C = 1) ) ? 1 : 0")
 }
 
+record(mbbo, "$(P)$(R)$(HYB):#Skew-S"){
+    field(DESC, "Global set Skew forwarder")
+    field(DOL,  "$(P)$(Glob)Skew-S CP")
+    field(OMSL, "closed_loop")
+    field(OUT, "$(P)$(R)$(HYB):Skew-S CP")
+    field(ZRST, "0 ns")
+    field(ZRVL, "0")
+    field(ONST, "2.83921 ns")
+    field(ONVL, "1")
+    field(TWST, "5.67842 ns")
+    field(TWVL, "2")
+    field(THST, "8.51764 ns")
+    field(THVL, "3")
+    field(FRST, "11.3568 ns")
+    field(FRVL, "4")
+    field(FVST, "14.1961 ns")
+    field(FVVL, "5")
+    field(SXST, "17.0353 ns")
+    field(SXVL, "6")
+    field(SVST, "19.8545 ns")
+    field(SVVL, "7")
+    field(EIST, "22.7137 ns")
+    field(EIVL, "8")
+    field(NIST, "25.5529 ns")
+    field(NIVL, "9")
+    field(TEST, "28.3921 ns")
+    field(TEVL, "10")
+    field(ELST, "31.2313 ns")
+    field(ELVL, "11")
+    field(TVST, "34.0705 ns")
+    field(TVVL, "12")
+    field(TTST, "36.9098 ns")
+    field(TTVL, "13")
+    field(FTST, "39.749 ns")
+    field(FTVL, "14")
+    field(FFST, "42.5882 ns")
+    field(FFVL, "15")
+}
+
 record(mbbo, "$(P)$(R)$(HYB):Skew-S"){
     field(DESC, "Hybrid's #$(HYB) Skew")
     field(DTYP, "asynInt32")
@@ -112,6 +158,29 @@ record(mbbi, "$(P)$(R)$(HYB):Skew-RB"){
     field(PINI, "YES")
 }
 
+record(mbbo, "$(P)$(R)$(HYB):#Width-S"){
+    field(DESC, "Global set width forwarder")
+    field(DOL,  "$(P)$(Glob)Width-S CP")
+    field(OMSL, "closed_loop")
+    field(OUT, "$(P)$(R)$(HYB):Width-S CP")
+    field(ZRST, "128 x 22.7137")
+    field(ZRVL, "0")
+    field(ONST, "64 x 22.7137")
+    field(ONVL, "1")
+    field(TWST, "32 x 22.7137")
+    field(TWVL, "2")
+    field(THST, "16 x 22.7137")
+    field(THVL, "3")
+    field(FRST, "8 x 22.7137")
+    field(FRVL, "4")
+    field(FVST, "4 x 22.7137")
+    field(FVVL, "5")
+    field(SXST, "2 x 22.7137")
+    field(SXVL, "6")
+    field(SVST, "1 x 22.7137")
+    field(SVVL, "7")
+}
+
 record(mbbo, "$(P)$(R)$(HYB):Width-S"){
     field(DESC, "Hybrid's #$(HYB) Width")
     field(DTYP, "asynInt32")
@@ -159,6 +228,15 @@ record(mbbi, "$(P)$(R)$(HYB):Width-RB"){
     field(SCAN, "1 second")
 }
 
+record(bo, "$(P)$(R)$(HYB):#Pol-S") {
+    field(DESC, "Global set polarity forwarder")
+    field(DOL,  "$(P)$(Glob)Pol-S CP")
+    field(OMSL, "closed_loop")
+    field(OUT,  "$(P)$(R)$(HYB):Pol-S CP")
+    field(ZNAM, "positive")
+    field(ONAM, "negative")
+}
+
 record(bo, "$(P)$(R)$(HYB):Pol-S") {
     field(DESC, "Hybrid's #$(HYB) Polarity")
     field(SDIS, "$(P)$(R)$(HYB):#CalcDISA CP")
diff --git a/vmmTblApp/Db/vmm-fen-global.template b/vmmTblApp/Db/vmm-fen-global.template
new file mode 100644
index 0000000000000000000000000000000000000000..fe602b996ffbcd13eb52902a91df5c419cb4ef72
--- /dev/null
+++ b/vmmTblApp/Db/vmm-fen-global.template
@@ -0,0 +1,6 @@
+record(bo, "$(P)$(R)Acquire-S") {
+    field(DESC, "Start/stop ALL FEN acquisition")
+    field(VAL,  "0")
+    field(ZNAM, "Done")
+    field(ONAM, "Acquire")
+}
\ No newline at end of file
diff --git a/vmmTblApp/Db/vmm-global.template b/vmmTblApp/Db/vmm-global.template
new file mode 100644
index 0000000000000000000000000000000000000000..9142e25702287d9ca0f552180194d742cafe97aa
--- /dev/null
+++ b/vmmTblApp/Db/vmm-global.template
@@ -0,0 +1,175 @@
+record(ao, "$(P)$(R)AnalogMon-S"){
+    field(DESC, "Global set analog monitor")
+    field(DRVL, "0")
+    field(DRVH, "67")
+}
+
+record(calcout, "$(P)$(R)#AnlgMonClc-S") {
+    field(DESC, "Auxiliary to AnalogMon")
+    field(INPA, "$(P)$(R)AnlgMonParam-S CP")
+    field(CALC, "A+64")
+    field(OUT,  "$(P)$(R)AnalogMon-S CP")
+}
+
+record(mbbo, "$(P)$(R)AnlgMonParam-S") {
+    field(DESC, "Auxiliar to set AnalogMon")
+    field(ZRST, "Pulser")
+    field(ZRVL, "64")
+    field(ONST, "Threshold")
+    field(ONVL, "65")
+    field(TWST, "Bandgap")
+    field(TWVL, "66")
+    field(THST, "Temperature")
+    field(THVL, "67")
+}
+
+record(ao, "$(P)$(R)V0AnalogMon-S"){
+    field(DESC, "Global analog monitor for VMM 0")
+    field(DRVL, "0")
+    field(DRVH, "67")
+}
+
+record(calcout, "$(P)$(R)V0#AnlgMonClc-S") {
+    field(DESC, "Auxiliary to AnalogMon")
+    field(INPA, "$(P)$(R)V0AnlgMonParam-S CP")
+    field(CALC, "A+64")
+    field(OUT,  "$(P)$(R)V0AnalogMon-S CP")
+}
+
+record(mbbo, "$(P)$(R)V0AnlgMonParam-S") {
+    field(DESC, "Auxiliar to set AnalogMon")
+    field(ZRST, "Pulser")
+    field(ZRVL, "64")
+    field(ONST, "Threshold")
+    field(ONVL, "65")
+    field(TWST, "Bandgap")
+    field(TWVL, "66")
+    field(THST, "Temperature")
+    field(THVL, "67")
+}
+
+record(ao, "$(P)$(R)V1AnalogMon-S"){
+    field(DESC, "Global analog monitor for VMM 1")
+    field(DRVL, "0")
+    field(DRVH, "67")
+}
+
+record(calcout, "$(P)$(R)V1#AnlgMonClc-S") {
+    field(DESC, "Auxiliary to AnalogMon")
+    field(INPA, "$(P)$(R)V1AnlgMonParam-S CP")
+    field(CALC, "A+64")
+    field(OUT,  "$(P)$(R)V1AnalogMon-S CP")
+}
+
+record(mbbo, "$(P)$(R)V1AnlgMonParam-S") {
+    field(DESC, "Auxiliar to set AnalogMon")
+    field(ZRST, "Pulser")
+    field(ZRVL, "64")
+    field(ONST, "Threshold")
+    field(ONVL, "65")
+    field(TWST, "Bandgap")
+    field(TWVL, "66")
+    field(THST, "Temperature")
+    field(THVL, "67")
+}
+
+record(aao, "$(P)$(R)$(CH)-S") {
+    field(DESC, "Set $(CH) channels array (millivolt)")
+    field(DTYP, "asynInt8ArrayOut")
+    field(NELM, "64")
+    field(FTVL, "CHAR")
+    field(OUT,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))VMM_GLOBAL_SD")
+
+    info(asyn:READBACK, "1")
+}
+
+record(aai, "$(P)$(R)$(CH)-RB") {
+    field(DESC, "Read from setpoint to initialize")
+    field(DTYP, "asynInt8ArrayIn")
+    field(NELM, "64")
+    field(PINI, "YES")
+    field(FTVL, "CHAR")
+    field(SCAN, "I/O Intr")
+    field(INP,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))VMM_GLOBAL_SD")
+}
+
+record(ao, "$(P)$(R)All$(CH)-S") {
+    field(DESC, "Set all $(CH) channels for all VMMs")
+    field(DRVH, "31")
+    field(DRVL, "0")
+}
+
+record(acalcout, "$(P)$(R)#All$(CH)-S") {
+    field(NELM, "64")
+    field(OOPT, "On Change")
+    field(CALC, "A")
+    field(INPA, "$(P)$(R)All$(CH)-S CPP")
+    field(INAA, "$(P)$(R)$(CH)-S")
+    field(OUT,  "$(P)$(R)$(CH)-S PP")
+}
+
+record(aao, "$(P)$(R)V0$(CH)-S") {
+    field(DESC, "Set $(CH) for all VMM 0")
+    field(DTYP, "asynInt8ArrayOut")
+    field(OUT,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))VMM_GLOBAL_SD_VMM0")
+    field(NELM, "64")
+    field(FTVL, "CHAR")
+
+    info(asyn:READBACK, "1")
+}
+
+record(aai, "$(P)$(R)V0$(CH)-RB") {
+    field(DESC, "Read from setpoint to initialize")
+    field(DTYP, "asynInt8ArrayIn")
+    field(NELM, "64")
+    field(PINI, "YES")
+    field(FTVL, "CHAR")
+    field(SCAN, "I/O Intr")
+    field(INP,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))VMM_GLOBAL_SD_VMM0")
+}
+
+record(ao, "$(P)$(R)V0All$(CH)-S") {
+    field(DESC, "Set all $(CH) channels for all VMMs")
+}
+
+record(acalcout, "$(P)$(R)V0#All$(CH)-S") {
+    field(NELM, "64")
+    field(OOPT, "On Change")
+    field(CALC, "A")
+    field(INPA, "$(P)$(R)V0All$(CH)-S CPP")
+    field(INAA, "$(P)$(R)V0$(CH)-S")
+    field(OUT,  "$(P)$(R)V0$(CH)-S PP")
+}
+
+record(aao, "$(P)$(R)V1$(CH)-S") {
+    field(DESC, "Set $(CH) for all VMM 1")
+    field(DTYP, "asynInt8ArrayOut")
+    field(OUT,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))VMM_GLOBAL_SD_VMM1")
+    field(NELM, "64")
+    field(FTVL, "CHAR")
+
+    info(asyn:READBACK, "1")
+}
+
+record(aai, "$(P)$(R)V1$(CH)-RB") {
+    field(DESC, "Read from setpoint to initialize")
+    field(DTYP, "asynInt8ArrayIn")
+    field(NELM, "64")
+    field(PINI, "YES")
+    field(FTVL, "CHAR")
+    field(SCAN, "I/O Intr")
+    field(INP,  "@asyn($(PORT),$(ADDR),$(TIMEOUT))VMM_GLOBAL_SD_VMM1")
+}
+
+record(ao, "$(P)$(R)V1All$(CH)-S") {
+    field(DESC, "Set all $(CH) channels for all VMMs")
+}
+
+record(acalcout, "$(P)$(R)V1#All$(CH)-S") {
+    field(NELM, "64")
+    field(OOPT, "On Change")
+    field(CALC, "A")
+    field(INPA, "$(P)$(R)V1All$(CH)-S CPP")
+    field(INAA, "$(P)$(R)V1$(CH)-S")
+    field(OUT,  "$(P)$(R)V1$(CH)-S PP")
+}
\ No newline at end of file
diff --git a/vmmTblApp/Db/vmm.template b/vmmTblApp/Db/vmm.template
index 5b436255c8c6be96b7a5ece7b0a975f36695a6b7..47b38da5c7200afe8475ffbc8c48209c9c754985 100644
--- a/vmmTblApp/Db/vmm.template
+++ b/vmmTblApp/Db/vmm.template
@@ -1,5 +1,23 @@
 ##### Records to configure a given vmm from a given hybrid
 
+record(aao, "$(P)$(R)$(HYB)$(VMM)$(C)##$(CH)-S") {
+    field(DESC, "Global channels forwarder for VMM $(VMM)")
+    field(DOL,  "$(P)$(Glob)V$(VMM)$(CH)-S CP")
+    field(OMSL, "closed_loop")
+    field(OUT,  "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-S CP")
+    field(NELM, "64")
+    field(FTVL, "CHAR")
+}
+
+record(aao, "$(P)$(R)$(HYB)$(VMM)$(C)#$(CH)-S") {
+    field(DESC, "Set global channels array forwarder")
+    field(DOL,  "$(P)$(Glob)$(CH)-S CP")
+    field(OMSL, "closed_loop")
+    field(OUT,  "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-S CP")
+    field(NELM, "64")
+    field(FTVL, "CHAR")
+}
+
 record(aao, "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-S") {
     field(DESC, "Set $(CH) channels array (millivolt)")
     field(DTYP, "asynInt8ArrayOut")
@@ -61,6 +79,24 @@ record(acalcout, "$(P)$(R)$(HYB)$(VMM)$(C)#All$(CH)-S") {
 # 64, 65, 66 and 67 are respectively for reading
 # Pulser, Threshold, Bandgap and Temperature respectively.
 
+record(ao, "$(P)$(R)$(HYB)$(VMM)$(C)##AnalogMon-S") {
+    field(DESC, "Global analogmon forwarder for VMM $(VMM)")
+    field(DOL,  "$(P)$(Glob)V$(VMM)AnalogMon-S CP")
+    field(OMSL, "closed_loop")
+    field(OUT,  "$(P)$(R)$(HYB)$(VMM)$(C)AnalogMon-S CP")
+    field(DRVL, "0")
+    field(DRVH, "67")
+}
+
+record(ao, "$(P)$(R)$(HYB)$(VMM)$(C)#AnalogMon-S"){
+    field(DESC, "Global set analogmon forwarder")
+    field(DOL,  "$(P)$(Glob)AnalogMon-S CP")
+    field(OMSL, "closed_loop")
+    field(OUT,  "$(P)$(R)$(HYB)$(VMM)$(C)AnalogMon-S CP")
+    field(DRVL, "0")
+    field(DRVH, "67")
+}
+
 record(ao, "$(P)$(R)$(HYB)$(VMM)$(C)AnalogMon-S"){
     field(DESC, "Select analog monitor (sm)")
     field(DTYP, "asynInt32")
diff --git a/vmmTblApp/Db/vmm_tbl.template b/vmmTblApp/Db/vmm_tbl.template
index 010c9675d83e1b062a95586a3faf7ee8652a8d62..2fafa2ce19d279a805515df4b0b55c19e9d9088f 100644
--- a/vmmTblApp/Db/vmm_tbl.template
+++ b/vmmTblApp/Db/vmm_tbl.template
@@ -1,3 +1,10 @@
+record(bo, "$(P)$(R)#Acquire-S") {
+    field(DESC, "Global acquire PV forwarder")
+    field(DOL,  "$(P)$(Glob)Acquire-S CP")
+    field(OMSL, "closed_loop")
+    field(OUT, "$(P)$(R)Acquire-S CP")
+}
+
 record(bo, "$(P)$(R)Acquire-S") {
     field(DESC, "Start/stop FEN acquisition")
     field(VAL,  "0")
diff --git a/vmmTblApp/src/vmm_tbl.cpp b/vmmTblApp/src/vmm_tbl.cpp
index 298b27cf762dc1b7ee5c5f83431fc0f4497a4122..0d49e1d996b8d8749ae008b8c19949ec484f618c 100644
--- a/vmmTblApp/src/vmm_tbl.cpp
+++ b/vmmTblApp/src/vmm_tbl.cpp
@@ -313,6 +313,9 @@ asynStatus VMMTbl::createEpicsParams() {
   createParam("VMM_FEN_ACQUIRING", asynParamInt32, &vmmIsAcquiring_);
   createParam("NUM_HYBRIDS", asynParamInt32, &vmmNumHybrids);
   createParam("IOC_MESSAGE", asynParamOctet, &IOCMessage);
+  createParam("VMM_GLOBAL_SD", asynParamInt8Array, &global_SD);
+  createParam("VMM_GLOBAL_SD_VMM0", asynParamInt8Array, &global_SD0);
+  createParam("VMM_GLOBAL_SD_VMM1", asynParamInt8Array, &global_SD1);
 
   std::tuple<std::string, asynParamType, std::vector<int> *> hyb_params_to_create[8] = {
       {"_FW_VERSION", asynParamOctet, &vmmHybFwVersion_},
@@ -564,6 +567,14 @@ asynStatus VMMTbl::readInt8Array(asynUser *pasynUser, epicsInt8 *value, size_t n
 
   if (function < FIRST_VMM_PARAM) return asynPortDriver::readInt8Array(pasynUser, value, nElements, nIn);
 
+  if (function == global_SD || function == global_SD0 || function == global_SD1) {
+    found_param = 0;
+    for (size_t i = 0; i < nElements; i++) {
+      value[i] = 0;  // This is used only to initialize the array
+    }
+    goto endOfReadInt8Array;
+  }
+
   found_param = VecUtils::getIndex(vmmSC_R, function, hyb_index, vmm_index);
   if (found_param == 0) {
     for (size_t i = 0; i < nElements; i++) {
@@ -723,6 +734,11 @@ asynStatus VMMTbl::writeInt8Array(asynUser *pasynUser, epicsInt8 *value, size_t
 
   if (function < FIRST_VMM_PARAM) return asynPortDriver::writeInt8Array(pasynUser, value, nElements);
 
+  if (function == global_SD || function == global_SD0 || function == global_SD1) {
+    found_param = 0;
+    goto endOfWriteInt8Array;
+  }
+
   found_param = VecUtils::getIndex(vmmSC_, function, hyb_index, vmm_index);
   if (found_param == 0) {
     for (size_t i = 0; i < nElements; i++) {
diff --git a/vmmTblApp/src/vmm_tbl.h b/vmmTblApp/src/vmm_tbl.h
index b5d6b4e5f9c127ab213cdc535466b19c6296d961..41e32ee40b8808684ca0f5f47ae327ace61f4307 100644
--- a/vmmTblApp/src/vmm_tbl.h
+++ b/vmmTblApp/src/vmm_tbl.h
@@ -38,6 +38,9 @@ class VMMTbl : public asynPortDriver {
   int vmmIsAcquiring_;
   int vmmNumHybrids;
   int IOCMessage;
+  int global_SD;
+  int global_SD0;
+  int global_SD1;
   std::vector<int> vmmHybFwVersion_;
   std::vector<int> vmmHybId_;
   std::vector<int> vmmHybGeoPos_;