diff --git a/agent_based/checkpoint_asg_smo_counters.py b/agent_based/checkpoint_asg_smo_counters.py
new file mode 100644
index 0000000000000000000000000000000000000000..f67256fb873ba0241c9218c82c8a635ef0f05c47
--- /dev/null
+++ b/agent_based/checkpoint_asg_smo_counters.py
@@ -0,0 +1,235 @@
+#!/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  : 2020-11-09
+#
+# Monitor Check Point Maestro SMO SGM Counters
+#
+# 2021-09-10: rewritten for CMK 2.0
+#
+#
+# sample snmpwalk 
+# .1.3.6.1.4.1.2620.1.48.20.1.0 = STRING: "111802"
+# .1.3.6.1.4.1.2620.1.48.20.2.0 = STRING: "0"
+# .1.3.6.1.4.1.2620.1.48.20.3.0 = STRING: "84"
+# .1.3.6.1.4.1.2620.1.48.20.4.0 = STRING: "91"
+# .1.3.6.1.4.1.2620.1.48.20.5.0 = STRING: "N/A"
+# .1.3.6.1.4.1.2620.1.48.20.6.0 = STRING: "0"
+# .1.3.6.1.4.1.2620.1.48.20.7.0 = STRING: "0"
+# .1.3.6.1.4.1.2620.1.48.20.8.0 = STRING: "9"
+# .1.3.6.1.4.1.2620.1.48.20.9.0 = STRING: "79"
+# .1.3.6.1.4.1.2620.1.48.20.10.0 = STRING: "1"
+# .1.3.6.1.4.1.2620.1.48.20.11.0 = STRING: "0"
+# .1.3.6.1.4.1.2620.1.48.20.12.0 = STRING: "0"
+# .1.3.6.1.4.1.2620.1.48.20.13.0 = STRING: "0"
+# .1.3.6.1.4.1.2620.1.48.20.14.0 = STRING: "1"
+# .1.3.6.1.4.1.2620.1.48.20.15.0 = STRING: "0"
+# .1.3.6.1.4.1.2620.1.48.20.16.0 = STRING: "7"
+# .1.3.6.1.4.1.2620.1.48.20.17.0 = STRING: "0"
+# .1.3.6.1.4.1.2620.1.48.20.18.0 = STRING: "0"
+# .1.3.6.1.4.1.2620.1.48.20.19.0 = STRING: "0"
+# .1.3.6.1.4.1.2620.1.48.20.20.0 = STRING: "0"
+# .1.3.6.1.4.1.2620.1.48.20.21.0 = STRING: "N/A"
+#
+# sample info
+# [[u'111802', u'0', u'84', u'91', u'N/A', u'0', u'0', u'9', u'79', u'1', u'0', u'0', u'0', u'1', u'0', u'7', u'0', u'0', u'0', u'0', u'N/A']]
+#
+import time
+from dataclasses import dataclass
+from typing import List, Dict, NamedTuple, Optional
+
+from cmk.base.plugins.agent_based.agent_based_api.v1 import (
+    register,
+    Service,
+    Result,
+    Metric,
+    State,
+    SNMPTree,
+    all_of,
+    startswith,
+    any_of,
+    equals,
+    check_levels,
+    render,
+)
+from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
+    DiscoveryResult,
+    CheckResult,
+    StringTable,
+)
+
+
+def parse_checkpoint_asg_smo_counters(string_table: StringTable) -> Dict[str, Dict[str, int]]:
+    items = {}
+    for entry in string_table:
+        asgThroughput, asgConnectionRate, asgPacketRate, asgConcurrConn, asgClearConn, asgAccelConnectionRate, \
+        asgNonAccelConnectionRate, asgAccelConcurrConn, asgNonAccelConcurrConn, asgLoad, asgAccelLoadAvg, \
+        asgAccelLoadMin, asgAccelLoadMax, asgInstancesLoadAvg, asgInstancesLoadMin, asgInstancesLoadMax, \
+        asgVpnThroughput, asgVpnConn, asgNatConnRate, asgNatConn, asgVsxCpu1MinAvg = entry
+
+        items['Concurrent connections'] = {
+            'asgConcurrConn': int(asgConcurrConn),
+            'asgAccelConcurrConn': int(asgAccelConcurrConn),
+            'asgNonAccelConcurrConn': int(asgNonAccelConcurrConn),
+        }
+        items['Connection rate'] = {
+            'asgConnectionRate': int(asgConnectionRate),
+            'asgAccelConnectionRate': int(asgAccelConnectionRate),
+            'asgNonAccelConnectionRate': int(asgNonAccelConnectionRate),
+        }
+
+        items['Load'] = {
+            'asgLoad': int(asgLoad),
+            'asgAccelLoadAvg': int(asgAccelLoadAvg),
+            'asgAccelLoadMin': int(asgAccelLoadMin),
+            'asgAccelLoadMax': int(asgAccelLoadMax),
+        }
+
+        items['Instances load'] = {
+            'asgInstancesLoadAvg': int(asgInstancesLoadAvg),
+            'asgInstancesLoadMin': int(asgInstancesLoadMin),
+            'asgInstancesLoadMax': int(asgInstancesLoadMax),
+        }
+        items['NAT'] = {
+            'asgNatConnRate': int(asgNatConnRate),
+            'asgNatConn': int(asgNatConn),
+        }
+        items['VPN'] = {
+            'asgVpnThroughput': int(asgVpnThroughput),
+            'asgVpnConn': int(asgVpnConn),
+        }
+        items['Throughput'] = {
+            'asgThroughput': int(asgThroughput),
+        }
+        items['Packet rate'] = {
+            'asgPacketRate': int(asgPacketRate),
+        }
+    return items
+
+
+def discovery_checkpoint_asg_smo_counters(section:Dict[str, Dict[str, int]]) -> DiscoveryResult:
+    # sample parsed
+    # {
+    #  'Load': {'asgAccelLoadAvg': 0, 'asgAccelLoadMin': 0, 'asgLoad': 1, 'asgAccelLoadMax': 0},
+    #  'Connection rate': {'asgConnectionRate': 0, 'asgNonAccelConnectionRate': 0, 'asgAccelConnectionRate': 0},
+    #  'Instances load': {'asgInstancesLoadMin': 0, 'asgInstancesLoadMax': 7, 'asgInstancesLoadAvg': 1},
+    #  'Throughput': {'asgThroughput': 111802},
+    #  'Concurrent connections': {'asgAccelConcurrConn': 9, 'asgNonAccelConcurrConn': 79, 'asgConcurrConn': 91},
+    #  'NAT': {'asgNatConn': 0, 'asgNatConnRate': 0},
+    #  'VPN': {'asgVpnConn': 0, 'asgVpnThroughput': 0},
+    #  'Packet rate': {'asgPacketRate': 84}}
+    #
+
+    for item in section.keys():
+        yield Service(item=item)
+
+
+def check_checkpoint_asg_smo_counters(item, params, section:Dict[str, Dict[str, int]]) -> CheckResult:
+    try:
+        entry = section[item]
+    except KeyError:
+        yield Result(state=State.UNKNOWN, notice='Item not found in SNMP data')
+        return
+
+    for key in entry.keys():
+        yield Metric(value=entry[key], name=f'checkpoint_asg_mso_counters_{key}')
+
+    if item.lower() == 'concurrent connections':
+        yield Result(
+            state=State.OK,
+            summary=f'all/accelerated/non accelerated: {entry["asgConcurrConn"]:d}/{entry["asgAccelConcurrConn"]:d}/{entry["asgNonAccelConcurrConn"]:d}'
+        )
+
+    elif item.lower() == 'load':
+        yield Result(
+            state=State.OK,
+            summary=f'current/average/min/max: {entry["asgLoad"]:d}/{entry["asgAccelLoadAvg"]:d}/{entry["asgAccelLoadMin"]:d}/{entry["asgAccelLoadMax"]:d}'
+        )
+
+    elif item.lower() == 'connection rate':
+        yield Result(
+            state=State.OK,
+            summary=f'all/accelerated/non accelerated: {entry["asgConnectionRate"]:d}/{entry["asgAccelConnectionRate"]:d}/{entry["asgNonAccelConnectionRate"]:d}'
+        )
+
+    elif item.lower() == 'instances load':
+        yield Result(
+            state=State.OK,
+            summary=f'average/min/max: {entry["asgInstancesLoadAvg"]:d}/{entry["asgInstancesLoadMin"]:d}/{entry["asgInstancesLoadMax"]:d}'
+        )
+
+    elif item.lower() == 'throughput':
+        yield Result(
+            state=State.OK,
+            summary=f'Throughput: {entry["asgThroughput"]:d}'
+        )
+
+    elif item.lower() == 'packet rate':
+        yield Result(
+            state=State.OK,
+            summary=f'Packet Rate: {entry["asgPacketRate"]:d}'
+        )
+
+    elif item.lower() == 'nat':
+        yield Result(
+            state=State.OK,
+            summary=f'NAT Connections/NAT connection rate: {entry["asgNatConn"]:d}/{entry["asgNatConn"]:d}'
+        )
+
+    elif item.lower() == 'vpn':
+        yield Result(
+            state=State.OK,
+            summary=f'VPN Connections/VPN Throughput: {entry["asgVpnConn"]:d}/{entry["asgVpnThroughput"]:d}'
+        )
+
+
+register.snmp_section(
+    name='checkpoint_asg_smo_counters',
+    parse_function=parse_checkpoint_asg_smo_counters,
+    fetch=SNMPTree(
+        base='.1.3.6.1.4.1.2620.1.48.20',  # CHECKPOINT-MIB::asgIPv4PerformanceCounters
+        oids=[
+            '1',  # asgThroughput
+            '2',  # asgConnectionRate
+            '3',  # asgPacketRate
+            '4',  # asgConcurrConn
+            '5',  # asgClearConn
+            '6',  # asgAccelConnectionRate
+            '7',  # asgNonAccelConnectionRate
+            '8',  # asgAccelConcurrConn
+            '9',  # asgNonAccelConcurrConn
+            '10',  # asgLoad
+            '11',  # asgAccelLoadAvg
+            '12',  # asgAccelLoadMin
+            '13',  # asgAccelLoadMax
+            '14',  # asgInstancesLoadAvg
+            '15',  # asgInstancesLoadMin
+            '16',  # asgInstancesLoadMax
+            '17',  # asgVpnThroughput
+            '18',  # asgVpnConn
+            '19',  # asgNatConnRate
+            '20',  # asgNatConn
+            '21',  # asgVsxCpu1MinAvg
+        ]
+    ),
+    detect=any_of(
+        startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.2620'),
+        all_of(
+            equals('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.8072.3.2.10'),
+            equals('.1.3.6.1.4.1.2620.1.6.1.0', 'SVN Foundation'),
+        )
+    )
+)
+
+register.check_plugin(
+    name='checkpoint_asg_smo_counters',
+    service_name='ASG SMO counters %s',
+    discovery_function=discovery_checkpoint_asg_smo_counters,
+    check_function=check_checkpoint_asg_smo_counters,
+    check_ruleset_name='checkpoint_asg_smo_counters',
+    check_default_parameters={},
+)
diff --git a/checkpoint_asg_smo_counters.mkp b/checkpoint_asg_smo_counters.mkp
index 8da2e24319a8daf55b64a9d9934c86bdf0132650..12a3e8c8a121b008617504a9f0b1343b8d0323d2 100644
Binary files a/checkpoint_asg_smo_counters.mkp and b/checkpoint_asg_smo_counters.mkp differ
diff --git a/packages/checkpoint_asg_smo_counters b/packages/checkpoint_asg_smo_counters
index eb3414bdf9523f0839e6d471a7aeeccb5082ee5a..aa77eade9e4db47493b64b0eb02dbe25c70b7b4c 100644
--- a/packages/checkpoint_asg_smo_counters
+++ b/packages/checkpoint_asg_smo_counters
@@ -1,11 +1,11 @@
-{'author': u'Th.L. (thl-cmk[at]outlook[dot]com)',
- 'description': u'Monitor Check Point Maestro SMO performance counters',
+{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)',
+ 'description': 'Monitor Check Point Maestro SMO performance counters\n',
  'download_url': 'http://thl-cmk.hopto.org/',
- 'files': {'checks': ['checkpoint_asg_smo_counters']},
+ 'files': {'agent_based': ['checkpoint_asg_smo_counters.py']},
  'name': 'checkpoint_asg_smo_counters',
  'num_files': 1,
- 'title': u'Check Point Maestro SMO performance counters',
- 'version': '20201110.v0.1',
- 'version.min_required': '1.4.0p38',
- 'version.packaged': '1.6.0p15',
+ 'title': 'Check Point Maestro SMO performance counters',
+ 'version': '20210910.v0.2',
+ 'version.min_required': '2.0.0',
+ 'version.packaged': '2021.07.14',
  'version.usable_until': None}
\ No newline at end of file