diff --git a/README.md b/README.md
index 3aa5ec47a30c6c79a3d19d183d844e11fd1ed011..bc91117ce12ce3d507199a66add3bcbd1e966adb 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+[PACKAGE]: ../../raw/master/mkp/inv_opengear_serial_line-0.1.2-20240510.mkp "inv_opengear_serial_line-0.1.2-20240510.mkp"
 # Hardware inventory
 
 ### Plugin Info
diff --git a/agent_based/inv_opengear_serial_lines.py b/agent_based/inv_opengear_serial_lines.py
deleted file mode 100644
index dcd581afe14371487fd0b83a9aca06175384b081..0000000000000000000000000000000000000000
--- a/agent_based/inv_opengear_serial_lines.py
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-#
-# License: GNU General Public License v2
-#
-# Author: thl-cmk[at]outlook[dot]com
-# URL   : https://thl-cmk.hopto.org
-# Date  : 20212-07-08
-# File  : inv_opengear_serial_line
-#
-# inventory of opengear console servers serial lines
-#
-# 2023-02-20: moved gui files from ~/local/share/check_mk/... to ~/local/lib/check_mk...
-# 2023-06-16: removed unused inventory_ruleset_name and params
-
-from cmk.base.plugins.agent_based.agent_based_api.v1 import (
-    register,
-    SNMPTree,
-    TableRow,
-    startswith,
-    OIDEnd,
-)
-from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
-    StringTable,
-    InventoryResult,
-)
-
-_opengear_state = {
-    '1': 'on',
-    '2': 'off',
-}
-
-_opengear_log_level = {
-    '1': 'disabled',
-    '2': 'connect',
-    '3': 'inputAndOutput',
-    '4': 'inputOnly',
-    '5': 'outputOnly',
-}
-
-_opengear_mode = {
-    '1': 'none',
-    '2': 'console',
-    '3': 'sdt',
-    '4': 'terminal',
-    '5': 'bridge',
-}
-
-_opengear_flow_control = {
-    '1': 'none',
-    '2': 'hardware',
-    '3': 'software',
-}
-
-_opengear_stop_bits = {
-    '1': 'one',
-    '2': 'two',
-    '3': 'oneAndAHalf',
-}
-
-_opengear_parity = {
-    '1': 'none',
-    '2': 'odd',
-    '3': 'even',
-    '4': 'mark',
-    '5': 'space',
-}
-
-
-def parse_inv_opengear_serial_lines(string_table: StringTable):
-    section = []
-
-    for index, label, speed, databits, parity, stopbits, flowcontrol, mode, loglevel, \
-        dcd, dtr, dsr, cts, rts in string_table:
-        entry = {
-            'key_columns': {
-                'index': f'{int(index):02}'
-            },
-            'inventory_columns': {
-                'label': label,
-                'speed': speed,
-                'databits': databits,
-                'parity': _opengear_parity.get(parity, parity),
-                'stopbits': _opengear_stop_bits.get(stopbits, stopbits),
-                'flowcontrol': _opengear_flow_control.get(flowcontrol, flowcontrol),
-                'mode': _opengear_mode.get(mode, mode),
-                'loglevel': _opengear_log_level.get(loglevel, loglevel),
-                'cts': _opengear_state[cts],
-
-                'dcd': _opengear_state[dcd],
-                'dtr': _opengear_state[dtr],
-                'rts': _opengear_state[rts],
-            },
-            'status_columns': {
-
-            }
-        }
-
-        section.append(entry)
-
-    return section
-
-
-def inventory_bgp_peers(section) -> InventoryResult:
-    path = ['hardware', 'serial_lines']
-
-    for entry in section:
-        yield TableRow(
-            path=path,
-            key_columns=entry['key_columns'],
-            inventory_columns=entry['inventory_columns'],
-            status_columns=entry['status_columns']
-        )
-
-
-register.snmp_section(
-    name='inv_opengear_serial_lines',
-    parse_function=parse_inv_opengear_serial_lines,
-    fetch=SNMPTree(
-        base='.1.3.6.1.4.1.25049.17.2.1',  # OG-STATUSv2-MIB:orgSerialPortEntry
-        oids=[
-            OIDEnd(),  # line index
-            '2',  # ogSerialPortLabel
-            '3',  # ogSerialPortSpeed
-            '4',  # ogSerialPortDataBits
-            '5',  # ogSerialPortParity
-            '6',  # ogSerialPortStopBits
-            '7',  # ogSerialPortFlowControl
-            '8',  # ogSerialPortMode
-            '9',  # ogSerialPortLogLevel
-            # '10',  # ogSerialPortRxBytes
-            # '11',  # ogSerialPortTxBytes
-            # '12',  # ogSerialPortFramingErrors
-            # '13',  # ogSerialPortParityErrors
-            # '14',  # ogSerialPortOverrunErrors
-            # '15',  # ogSerialPortBreaks
-            '16',  # ogSerialPortDCD
-            '17',  # ogSerialPortDTR
-            '18',  # ogSerialPortDSR
-            '19',  # ogSerialPortCTS
-            '20',  # ogSerialPortRTS
-        ]
-    ),
-    detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.25049'),  # sysObjectID == opengear
-)
-
-register.inventory_plugin(
-    name='inv_opengear_serial_lines',
-    inventory_function=inventory_bgp_peers,
-)
diff --git a/doc/.gitkeep b/img/.gitkeep
similarity index 100%
rename from doc/.gitkeep
rename to img/.gitkeep
diff --git a/doc/sample.png b/img/sample.png
similarity index 100%
rename from doc/sample.png
rename to img/sample.png
diff --git a/inv_opengear_serial_line.mkp b/inv_opengear_serial_line.mkp
deleted file mode 100644
index 649054826aca7e12dbc7a1d67442a29494fa4ce3..0000000000000000000000000000000000000000
Binary files a/inv_opengear_serial_line.mkp and /dev/null differ
diff --git a/inv_opengear_serial_line-0.1.1-20230614.mkp b/mkp/inv_opengear_serial_line-0.1.1-20230614.mkp
similarity index 100%
rename from inv_opengear_serial_line-0.1.1-20230614.mkp
rename to mkp/inv_opengear_serial_line-0.1.1-20230614.mkp
diff --git a/mkp/inv_opengear_serial_line-0.1.2-20240510.mkp b/mkp/inv_opengear_serial_line-0.1.2-20240510.mkp
new file mode 100644
index 0000000000000000000000000000000000000000..3708e3fe24d7b7f2fd460bea62a388d829e8771f
Binary files /dev/null and b/mkp/inv_opengear_serial_line-0.1.2-20240510.mkp differ
diff --git a/source/agent_based/inv_opengear_serial_lines.py b/source/agent_based/inv_opengear_serial_lines.py
new file mode 100644
index 0000000000000000000000000000000000000000..8d22bb970386d1b893d128cc3715d75aaa2d4597
--- /dev/null
+++ b/source/agent_based/inv_opengear_serial_lines.py
@@ -0,0 +1,197 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 20212-07-08
+# File  : inv_opengear_serial_line
+#
+# inventory of opengear console servers serial lines
+#
+# 2023-02-20: moved gui files from ~/local/share/check_mk/... to ~/local/lib/check_mk...
+# 2023-06-16: removed unused inventory_ruleset_name and params
+# 2024-05-10: fixed wrong inventory function name
+#             integrated .1.3.6.1.4.1.25049.17.2.1 and .1.3.6.1.4.1.25049.10.19.2.2.1
+
+from collections.abc import Mapping, Sequence
+from typing import List
+
+from cmk.base.plugins.agent_based.agent_based_api.v1 import (
+    OIDEnd,
+    SNMPTree,
+    TableRow,
+    register,
+    startswith,
+)
+from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
+    InventoryResult,
+    StringTable,
+)
+
+_opengear_state = {
+    '0': 'off',
+    '1': 'on',
+    '2': 'off',
+}
+
+_opengear_log_level = {
+    '1': 'disabled',
+    '2': 'connect',
+    '3': 'inputAndOutput',
+    '4': 'inputOnly',
+    '5': 'outputOnly',
+}
+
+_opengear_mode = {
+    '1': 'none',
+    '2': 'console',
+    '3': 'sdt',
+    '4': 'terminal',
+    '5': 'bridge',
+}
+
+_opengear_flow_control = {
+    '1': 'none',
+    '2': 'hardware',
+    '3': 'software',
+}
+
+_opengear_stop_bits = {
+    '1': 'one',
+    '2': 'two',
+    '3': 'oneAndAHalf',
+}
+
+_opengear_parity = {
+    '1': 'none',
+    '2': 'odd',
+    '3': 'even',
+    '4': 'mark',
+    '5': 'space',
+}
+
+SECTION = Sequence[Mapping[str, Mapping[str, str]]]
+
+
+def parse_inv_opengear_serial_lines(string_table: List[StringTable]) -> SECTION | None:
+    try:
+        raw_data, raw_data_v2 = string_table
+    except ValueError:
+        return
+
+    if not raw_data:
+        raw_data = raw_data_v2
+
+    section = []
+
+    for line in raw_data:
+        try:
+            index, label, speed, databits, parity, stopbits, flowcontrol, mode, loglevel, dcd, dtr, dsr, cts, rts = line
+        except ValueError:
+            return
+
+        entry = {
+            'key_columns': {
+                'index': f'{int(index):02}'
+            },
+            'inventory_columns': {
+                'label': label,
+                'speed': speed,
+                'databits': databits,
+                'parity': _opengear_parity.get(parity, parity),
+                'stopbits': _opengear_stop_bits.get(stopbits, stopbits),
+                'flowcontrol': _opengear_flow_control.get(flowcontrol, flowcontrol),
+                'mode': _opengear_mode.get(mode, mode),
+                'loglevel': _opengear_log_level.get(loglevel, loglevel),
+                'cts': _opengear_state[cts],
+
+                'dcd': _opengear_state[dcd],
+                'dtr': _opengear_state[dtr],
+                'rts': _opengear_state[rts],
+            },
+            'status_columns': {
+            }
+        }
+
+        section.append(entry)
+
+    return section
+
+
+def inv_opengear_serial_lines(section: SECTION) -> InventoryResult:
+    path = ['hardware', 'serial_lines']
+
+    for entry in section:
+        yield TableRow(
+            path=path,
+            key_columns=entry['key_columns'],
+            inventory_columns=entry['inventory_columns'],
+            status_columns=entry['status_columns']
+        )
+
+
+register.snmp_section(
+    name='inv_opengear_serial_lines',
+    parse_function=parse_inv_opengear_serial_lines,
+    fetch=[
+        SNMPTree(
+            base='.1.3.6.1.4.1.25049.17.2.1',  # OG-STATUSv2-MIB:orgSerialPortEntry
+            oids=[
+                OIDEnd(),  # line index
+                '2',  # ogSerialPortLabel
+                '3',  # ogSerialPortSpeed
+                '4',  # ogSerialPortDataBits
+                '5',  # ogSerialPortParity
+                '6',  # ogSerialPortStopBits
+                '7',  # ogSerialPortFlowControl
+                '8',  # ogSerialPortMode
+                '9',  # ogSerialPortLogLevel
+                # '10',  # ogSerialPortRxBytes
+                # '11',  # ogSerialPortTxBytes
+                # '12',  # ogSerialPortFramingErrors
+                # '13',  # ogSerialPortParityErrors
+                # '14',  # ogSerialPortOverrunErrors
+                # '15',  # ogSerialPortBreaks
+                '16',  # ogSerialPortDCD
+                '17',  # ogSerialPortDTR
+                '18',  # ogSerialPortDSR
+                '19',  # ogSerialPortCTS
+                '20',  # ogSerialPortRTS
+            ]
+        ),
+        SNMPTree(
+            base='.1.3.6.1.4.1.25049.10.19.2.2.1',  #
+            oids=[
+                OIDEnd(),  # line index
+                '2',  # ogSerialPortLabel
+                '3',  # ogSerialPortSpeed
+                '4',  # ogSerialPortDataBits
+                '5',  # ogSerialPortParity
+                '6',  # ogSerialPortStopBits
+                '7',  # ogSerialPortFlowControl
+                '8',  # ogSerialPortMode
+                '9',  # ogSerialPortLogLevel
+                # '10',  # ogSerialPortRxBytes
+                # '11',  # ogSerialPortTxBytes
+                # '12',  # ogSerialPortFramingErrors
+                # '13',  # ogSerialPortParityErrors
+                # '14',  # ogSerialPortOverrunErrors
+                # '15',  # ogSerialPortBreaks
+                '16',  # ogSerialPortDCD
+                '17',  # ogSerialPortDTR
+                '18',  # ogSerialPortDSR
+                '19',  # ogSerialPortCTS
+                '20',  # ogSerialPortRTS
+            ]
+        ),
+    ],
+
+    detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.25049'),
+)
+
+register.inventory_plugin(
+    name='inv_opengear_serial_lines',
+    inventory_function=inv_opengear_serial_lines,
+)
diff --git a/packages/inv_opengear_serial_line b/source/packages/inv_opengear_serial_line
similarity index 74%
rename from packages/inv_opengear_serial_line
rename to source/packages/inv_opengear_serial_line
index 7926a6f2c6154ddcb08873733a28402a8c1031e6..ca742028618c0feed6264b6a4d79c2a04f7618a4 100644
--- a/packages/inv_opengear_serial_line
+++ b/source/packages/inv_opengear_serial_line
@@ -2,10 +2,10 @@
  'description': 'Inventory for opengear KVM devices serial lines\n',
  'download_url': 'https://thl-cmk.hopto.org',
  'files': {'agent_based': ['inv_opengear_serial_lines.py'],
-           'gui': ['views/inv_opengear_serial_lines.py']},
+           'web': ['plugins/views/inv_opengear_serial_lines.py']},
  'name': 'inv_opengear_serial_line',
  'title': 'opengear serial line inventory',
- 'version': '0.1.1-20230614',
+ 'version': '0.1.2-20240510',
  'version.min_required': '2.2.0b1',
- 'version.packaged': '2.2.0p2',
+ 'version.packaged': '2.2.0p24',
  'version.usable_until': None}
diff --git a/gui/views/inv_opengear_serial_lines.py b/source/web/plugins/views/inv_opengear_serial_lines.py
similarity index 92%
rename from gui/views/inv_opengear_serial_lines.py
rename to source/web/plugins/views/inv_opengear_serial_lines.py
index 3187360920e3f2eacecdb3329bbcbf308c8d8881..cd32ece3cc84a25acd8c65827ab52b37730cd8b7 100644
--- a/gui/views/inv_opengear_serial_lines.py
+++ b/source/web/plugins/views/inv_opengear_serial_lines.py
@@ -11,18 +11,17 @@
 # 2023-02-20: moved from ~/local/share/check_mk/... to ~/local/lib/check_mk...
 # 2023-06-14: removed declare_invtable_view from view definition on cmk 2.2 (see werk 15493)
 #             changed inventory_displayhints import (see werk 15493)
-
+# 2024-05-10: moved back to ~/local/share/check_mk/... from ~/local/lib/check_mk... fixed crash in web.log
 
 from cmk.gui.i18n import _
 from cmk.gui.views.inventory.registry import inventory_displayhints
 
-
 inventory_displayhints.update({
     '.hardware.serial_lines:': {
         'title': _('Serial lines'),
         'keyorder': [
             'index',
-            'label', 
+            'label',
             'speed', 'databits', 'parity', 'stopbits', 'flowcontrol'
         ],
         'view': 'invseriallines_of_host',