diff --git a/MQ/mcbm/CbmDeviceUnpack.cxx b/MQ/mcbm/CbmDeviceUnpack.cxx
index ff015a32000891311e35a1c37156c99aa6aa7ed0..af97142bd5becb0c481c6686961c186199a375bf 100644
--- a/MQ/mcbm/CbmDeviceUnpack.cxx
+++ b/MQ/mcbm/CbmDeviceUnpack.cxx
@@ -142,121 +142,47 @@ Bool_t CbmDeviceUnpack::InitContainers()
       stsconfig->SetMinAdcCut(3, 1);
       stsconfig->SetMinAdcCut(4, 1);
 
-      stsconfig->MaskNoisyChannel(7, 715);
-      stsconfig->MaskNoisyChannel(7, 162);
-      stsconfig->MaskNoisyChannel(7, 159);
-      stsconfig->MaskNoisyChannel(7, 158);
-      stsconfig->MaskNoisyChannel(7, 125);
-      stsconfig->MaskNoisyChannel(7, 124);
-      stsconfig->MaskNoisyChannel(7, 123);
-      stsconfig->MaskNoisyChannel(12, 119);
-      stsconfig->MaskNoisyChannel(3, 85);
-      stsconfig->MaskNoisyChannel(3, 79);
-      stsconfig->MaskNoisyChannel(3, 75);
       stsconfig->MaskNoisyChannel(3, 56);
+      stsconfig->MaskNoisyChannel(3, 75);
+      stsconfig->MaskNoisyChannel(3, 79);
+      stsconfig->MaskNoisyChannel(3, 85);
+      stsconfig->MaskNoisyChannel(7, 123);
+      stsconfig->MaskNoisyChannel(7, 124);
+      stsconfig->MaskNoisyChannel(7, 125);
+      stsconfig->MaskNoisyChannel(7, 158);
+      stsconfig->MaskNoisyChannel(7, 159);
+      stsconfig->MaskNoisyChannel(7, 162);
+      stsconfig->MaskNoisyChannel(7, 715);
       stsconfig->MaskNoisyChannel(9, 709);
+      stsconfig->MaskNoisyChannel(12, 119);
+
+      // Time Walk correction
+      std::map<uint32_t, CbmStsParModule> walkMap;
+      auto parAsic = new CbmStsParAsic(128, 31, 31., 1., 5., 800., 1000., 3.9789e-3);
 
-      // Time OffSet
-      // U2 MOD1
-      stsconfig->SetAsicTimeOffset(104, 0.235097);
-      stsconfig->SetAsicTimeOffset(105, -0.919854);
-      stsconfig->SetAsicTimeOffset(106, 0.470871);
-      stsconfig->SetAsicTimeOffset(107, -0.302136);
-      stsconfig->SetAsicTimeOffset(108, 0.0538701);
-      stsconfig->SetAsicTimeOffset(109, -0.726945);
-      stsconfig->SetAsicTimeOffset(110, -0.474958);
-      stsconfig->SetAsicTimeOffset(111, -0.426105);
-      stsconfig->SetAsicTimeOffset(112, -0.642128);
-      stsconfig->SetAsicTimeOffset(113, 3.90217);
-      stsconfig->SetAsicTimeOffset(114, 4.50206);
-      stsconfig->SetAsicTimeOffset(115, 4.16447);
-      stsconfig->SetAsicTimeOffset(116, 5.00525);
-      stsconfig->SetAsicTimeOffset(117, 4.2554);
-      stsconfig->SetAsicTimeOffset(118, 5.51313);
-      stsconfig->SetAsicTimeOffset(119, 3.38058);
-      // U2 MOD0
-      stsconfig->SetAsicTimeOffset(88, 5.32785);
-      stsconfig->SetAsicTimeOffset(89, 5.10337);
-      stsconfig->SetAsicTimeOffset(90, 6.63223);
-      stsconfig->SetAsicTimeOffset(91, 4.44318);
-      stsconfig->SetAsicTimeOffset(92, 6.5406);
-      stsconfig->SetAsicTimeOffset(93, 3.82063);
-      stsconfig->SetAsicTimeOffset(94, 5.8673);
-      stsconfig->SetAsicTimeOffset(95, 4.41679);
-      stsconfig->SetAsicTimeOffset(96, 0.917994);
-      stsconfig->SetAsicTimeOffset(97, 2.7819);
-      stsconfig->SetAsicTimeOffset(98, 5.61836);
-      stsconfig->SetAsicTimeOffset(99, 5.9533);
-      stsconfig->SetAsicTimeOffset(100, 5.9789);
-      stsconfig->SetAsicTimeOffset(101, 5.24167);
-      stsconfig->SetAsicTimeOffset(102, 7.14848);
-      stsconfig->SetAsicTimeOffset(103, 6.12267);
-      // U1 MOD1
-      stsconfig->SetAsicTimeOffset(64, 6.94614);
-      stsconfig->SetAsicTimeOffset(65, 6.79433);
-      stsconfig->SetAsicTimeOffset(66, 5.57188);
-      stsconfig->SetAsicTimeOffset(67, 4.78256);
-      stsconfig->SetAsicTimeOffset(68, 4.47773);
-      stsconfig->SetAsicTimeOffset(69, 3.70702);
-      stsconfig->SetAsicTimeOffset(70, 4.02281);
-      stsconfig->SetAsicTimeOffset(71, 4.74402);
-      stsconfig->SetAsicTimeOffset(72, 2.13448);
-      stsconfig->SetAsicTimeOffset(73, 3.28798);
-      stsconfig->SetAsicTimeOffset(74, 4.13604);
-      stsconfig->SetAsicTimeOffset(76, 5.02552);
-      stsconfig->SetAsicTimeOffset(77, 3.55128);
-      stsconfig->SetAsicTimeOffset(78, 4.66596);
-      stsconfig->SetAsicTimeOffset(79, 3.76298);
-      // U1 MOD0
-      stsconfig->SetAsicTimeOffset(48, 10.0742);
-      stsconfig->SetAsicTimeOffset(49, 9.31221);
-      stsconfig->SetAsicTimeOffset(50, 6.09788);
-      stsconfig->SetAsicTimeOffset(51, 2.85866);
-      stsconfig->SetAsicTimeOffset(52, 5.45111);
-      stsconfig->SetAsicTimeOffset(53, 3.18376);
-      stsconfig->SetAsicTimeOffset(54, 4.77448);
-      stsconfig->SetAsicTimeOffset(55, 3.20388);
-      stsconfig->SetAsicTimeOffset(56, 3.37812);
-      stsconfig->SetAsicTimeOffset(57, 4.08165);
-      stsconfig->SetAsicTimeOffset(58, 5.06481);
-      stsconfig->SetAsicTimeOffset(59, 4.39388);
-      stsconfig->SetAsicTimeOffset(60, 5.63931);
-      stsconfig->SetAsicTimeOffset(61, 4.15354);
-      stsconfig->SetAsicTimeOffset(62, 6.67062);
-      stsconfig->SetAsicTimeOffset(63, 6.33579);
-      // U0 MOD1
-      stsconfig->SetAsicTimeOffset(24, 5.01505);
-      stsconfig->SetAsicTimeOffset(25, 3.84039);
-      stsconfig->SetAsicTimeOffset(26, 5.36344);
-      stsconfig->SetAsicTimeOffset(27, 2.96807);
-      stsconfig->SetAsicTimeOffset(28, 4.14668);
-      stsconfig->SetAsicTimeOffset(29, 2.4282);
-      stsconfig->SetAsicTimeOffset(30, 4.02055);
-      stsconfig->SetAsicTimeOffset(31, 4.13309);
-      stsconfig->SetAsicTimeOffset(32, 1.2073);
-      stsconfig->SetAsicTimeOffset(33, 4.02747);
-      stsconfig->SetAsicTimeOffset(34, 5.03306);
-      stsconfig->SetAsicTimeOffset(35, 3.5234);
-      stsconfig->SetAsicTimeOffset(36, 5.41946);
-      stsconfig->SetAsicTimeOffset(37, 4.82807);
-      stsconfig->SetAsicTimeOffset(38, 6.33436);
-      stsconfig->SetAsicTimeOffset(39, 4.71413);
-      // U0 MOD0
-      stsconfig->SetAsicTimeOffset(8, 8.15031);
-      stsconfig->SetAsicTimeOffset(9, 6.99897);
-      stsconfig->SetAsicTimeOffset(10, 8.14826);
-      stsconfig->SetAsicTimeOffset(11, 3.29095);
-      stsconfig->SetAsicTimeOffset(12, 3.04337);
-      stsconfig->SetAsicTimeOffset(14, 3.71628);
-      stsconfig->SetAsicTimeOffset(15, 3.82512);
-      stsconfig->SetAsicTimeOffset(16, 4.05862);
-      stsconfig->SetAsicTimeOffset(17, 4.53291);
-      stsconfig->SetAsicTimeOffset(18, 5.22825);
-      stsconfig->SetAsicTimeOffset(19, 4.93144);
-      stsconfig->SetAsicTimeOffset(20, 6.33821);
-      stsconfig->SetAsicTimeOffset(21, 5.66979);
-      stsconfig->SetAsicTimeOffset(22, 9.33802);
-      stsconfig->SetAsicTimeOffset(23, 7.41302);
+      // Module params: number of channels, number of channels per ASIC
+      auto parMod = new CbmStsParModule(2048, 128);
+
+      // default
+      double p0 = 0, p1 = 0, p2 = 0, p3 = 0;
+      parAsic->SetWalkCoef({p0, p1, p2, p3});
+      parMod->SetAllAsics(*parAsic);
+
+      walkMap[0x10107C02] = CbmStsParModule(*parMod);  // Make a copy for storage
+      walkMap[0x101FFC02] = CbmStsParModule(*parMod);  // Make a copy for storage
+
+      /// To be replaced by a storage in a new parameter class later
+      int sensor, asic;
+      std::ifstream asicTimeWalk_par(Form("%s/mStsAsicTimeWalk.par", parfilesbasepathSts.data()));
+      while (asicTimeWalk_par >> std::hex >> sensor >> std::dec >> asic >> p0 >> p1 >> p2 >> p3) {
+        std::cout << Form("Setting time-walk parametersfor: module %x, ASIC %u\n", sensor, asic);
+        parAsic->SetWalkCoef({p0, p1, p2, p3});
+
+        if (walkMap.find(sensor) == walkMap.end()) { walkMap[sensor] = CbmStsParModule(*parMod); }
+        walkMap[sensor].SetAsic(asic, *parAsic);
+      }
+
+      stsconfig->SetWalkMap(walkMap);
     }
   }  // if ("" != stsSetupTag)
   // -------------
@@ -328,6 +254,10 @@ Bool_t CbmDeviceUnpack::InitContainers()
     LOG(info) << "From received setup, using RICH tag: " << richSetupTag;
     richconfig = std::make_shared<CbmRichUnpackConfig>("", fuRunId);
     if (richconfig) {
+      if (1904 < fuRunId) {
+        /// Switch to new unpacking algo starting from first combined cosmics run in 2022
+        richconfig->SetUnpackerVersion(CbmRichUnpackerVersion::v03);
+      }
       richconfig->SetDebugState();
       richconfig->SetDoWriteOutput();
       std::string parfilesbasepathRich = Form("%s/macro/beamtime/mcbm2021/", srcDir.Data());
diff --git a/macro/run/run_unpack_tsa.C b/macro/run/run_unpack_tsa.C
index f02406cb3042423c2f0e9dc61dd2665d9f157b56..ed2ec39e9734112aab267156a910bc8efe10e931 100644
--- a/macro/run/run_unpack_tsa.C
+++ b/macro/run/run_unpack_tsa.C
@@ -107,6 +107,11 @@ void run_unpack_tsa(std::vector<std::string> infile = {"test.tsa"}, UInt_t runid
 
   richconfig = std::make_shared<CbmRichUnpackConfig>("", runid);
   if (richconfig) {
+    if (1904 < runid) {
+      /// Switch to new unpacking algo starting from first combined cosmics run in 2022
+      richconfig->SetUnpackerVersion(CbmRichUnpackerVersion::v03);
+    }
+
     richconfig->SetDebugState();
     richconfig->SetDoWriteOutput();
     std::string parfilesbasepathRich = Form("%s/macro/beamtime/mcbm2021/", srcDir.Data());