diff --git a/agent_based/checkpoint_asg_interface.py b/agent_based/checkpoint_asg_interface.py
index e5b5421acabf55513eb72bf29e89ad624eb60349..732f4b1c531219b5c6495d1e2a99499f9031bf9d 100644
--- a/agent_based/checkpoint_asg_interface.py
+++ b/agent_based/checkpoint_asg_interface.py
@@ -11,6 +11,7 @@
 #
 # 2021-03-03: rewrite for CMK 2.0
 # 2021-09-10: changed render function to networkbandwidth
+# 2021-09-11: added WTO options
 #
 # sample snmpwalk (for one interface)
 # .1.3.6.1.4.1.2620.1.48.26.1.1.1.4.0 = Gauge32: 4
@@ -47,7 +48,7 @@
 
 import time
 
-from typing import Mapping, Dict, List, Tuple, NamedTuple
+from typing import Dict, List, NamedTuple
 
 from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
     DiscoveryResult,
@@ -111,26 +112,6 @@ def parse_checkpoint_asg_interface(string_table: List[StringTable]) -> Dict[str,
 
 
 def discovery_checkpoint_asg_interface(section: Dict[str, CheckPointASGInterface]) -> DiscoveryResult:
-    # sample section
-    # 
-    # {
-    #  'bond2': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=3373103274, asgNetIfTx=5007776301),
-    #  'eth1-05': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1014183605, asgNetIfTx=3291515315),
-    #  'eth2-05': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=2358951560, asgNetIfTx=1716293763),
-    #  'bond2.602': CheckPointASGInterface(asgNetIfIPv4Addr='10.9.9.1/25', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Vlan', asgNetIfState='(up)/(up)', asgNetIfSpeed='NA', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=355320533, asgNetIfTx=4673143507),
-    #  'bond2.3001': CheckPointASGInterface(asgNetIfIPv4Addr='10.0.100.49/27', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Vlan', asgNetIfState='(up)/(up)', asgNetIfSpeed='NA', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=2910413426, asgNetIfTx=229216384),
-    #  'bond3': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=1479928728, asgNetIfTx=133617791),
-    #  'eth1-06': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=214459394, asgNetIfTx=131774843),
-    #  'eth2-06': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1265469477, asgNetIfTx=1843158),
-    #  'bond3.998': CheckPointASGInterface(asgNetIfIPv4Addr='xx.yy.zz.129/28', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Vlan', asgNetIfState='(up)/(up)', asgNetIfSpeed='NA', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1470381718, asgNetIfTx=124676073),
-    #  'magg1': CheckPointASGInterface(asgNetIfIPv4Addr='10.0.100.9/27', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:6e:9b:dc', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=200631796, asgNetIfTx=384654797),
-    #  'eth1-Mgmt1': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:6e:9b:dc', asgNetIfInfo='Bond slave', asgNetIfState='(Up)/(Up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=61520991, asgNetIfTx=44776128),
-    #  'eth2-Mgmt1': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:6e:9b:dc', asgNetIfInfo='Bond slave', asgNetIfState='(Up)/(Up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=139110651, asgNetIfTx=339878254),
-    #  'Sync': CheckPointASGInterface(asgNetIfIPv4Addr='192.0.2.1/24', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:01:04:fe', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=24549684703, asgNetIfTx=14214325659),
-    #  'eth1-Sync': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:01:04:fe', asgNetIfInfo='Bond slave', asgNetIfState='(down)/(down)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1228171, asgNetIfTx=1511513),
-    #  'eth2-Sync': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:01:04:fe', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=24548432877, asgNetIfTx=14212801896)
-    # }
-    #
     for item in section.keys():
         yield Service(item=item, parameters={'asgNetIfSpeed': section[item].asgNetIfSpeed})
 
@@ -147,47 +128,53 @@ def check_checkpoint_asg_interface(item, params, section: Dict[str, CheckPointAS
     now = time.time()
     value_store = get_value_store()
 
-    try:
-        in_rate = get_rate(value_store, 'in', now, asg_interface.asgNetIfRx, raise_overflow=True, )
-    except GetRateError as exc:
-        yield IgnoreResults(str(exc))
-    else:
-        yield from check_levels(in_rate, metric_name='if_in_octets', render_func=render.networkbandwidth, label='In', )
-
-    out_rate = get_rate(value_store, 'out', now, asg_interface.asgNetIfTx, raise_overflow=True, )
-    yield from check_levels(out_rate, metric_name='if_out_octets', render_func=render.networkbandwidth, label='Out', )
+    for label, metric, value in [
+        ('In', 'if_in_octets', asg_interface.asgNetIfRx),
+        ('Out', 'if_out_octets', asg_interface.asgNetIfTx),
+    ]:
+        try:
+            value = get_rate(value_store, label, now, value, raise_overflow=True, )
+        except GetRateError as exc:
+            yield IgnoreResults(str(exc))
+        else:
+            yield from check_levels(value, metric_name=metric, render_func=render.networkbandwidth, label=label, )
 
     details = ''
-    details += '\nIPv4 Address: %s' % asg_interface.asgNetIfIPv4Addr
-    details += '\nIPv6 Address: %s' % asg_interface.asgNetIfIPv6Addr
-    details += '\nMAC Address: %s' % asg_interface.asgNetIfMACAddr
-    details += '\nType: %s' % asg_interface.asgNetIfInfo
-    details += '\nMTU: %s' % asg_interface.asgNetIfMTU
-    details += '\nDuplex: %s' % asg_interface.asgNetIfDuplex
+    details += f'\nIPv4 Address: {asg_interface.asgNetIfIPv4Addr}'
+    details += f'\nIPv6 Address: {asg_interface.asgNetIfIPv6Addr}'
+    details += f'\nMAC Address: {asg_interface.asgNetIfMACAddr}'
+    details += f'\nType: {asg_interface.asgNetIfInfo}'
+    details += f'\nMTU: {asg_interface.asgNetIfMTU}'
+    details += f'\nDuplex: {asg_interface.asgNetIfDuplex}'
 
     if not asg_interface.asgNetIfIPv4Addr == '-':
-        summary = 'IPv4: %s' % asg_interface.asgNetIfIPv4Addr
+        summary = f'IPv4: {asg_interface.asgNetIfIPv4Addr}'
     else:
         summary = 'IPv4: N/A'
 
     yield Result(state=State.OK, summary=summary, details=details)
 
-    yield_text = 'State: %s' % asg_interface.asgNetIfState
+    yield_text = f'State: {asg_interface.asgNetIfState}'
     if not asg_interface.asgNetIfState.lower() == '(up)/(up)':
-        yield Result(state=State.CRIT, summary=yield_text)
+        yield Result(state=State(params['state_not_up_up']), summary=yield_text)
     else:
         yield Result(state=State.OK, summary=yield_text)
 
     if not asg_interface.asgNetIfSpeed == inv_asgNetIfSpeed:
-        yield Result(state=State.WARN,
-                     summary='Speed: %s (%s expected)' % (asg_interface.asgNetIfSpeed, inv_asgNetIfSpeed))
+        yield Result(
+            state=State(params['state_speed_changed']),
+            summary=f'Speed: {asg_interface.asgNetIfSpeed} ({inv_asgNetIfSpeed} expected)'
+        )
     elif not asg_interface.asgNetIfSpeed == 'NA':
-        yield Result(state=State.OK, summary='Speed %s' % asg_interface.asgNetIfSpeed)
+        yield Result(state=State.OK, summary=f'Speed {asg_interface.asgNetIfSpeed}')
 
-    if not asg_interface.asgNetIfDuplex.lower():
-        yield Result(state=State.CRIT, summary='Duplex: %s (Full expected)' % asg_interface.asgNetIfDuplex)
+    if not asg_interface.asgNetIfDuplex.lower() == 'full':
+        yield Result(
+            state=State(params['state_not_full_duplex']),
+            summary=f'Duplex: {asg_interface.asgNetIfDuplex} (Full expected)'
+        )
     else:
-        yield Result(state=State.OK, summary='Duplex: %s' % asg_interface.asgNetIfDuplex)
+        yield Result(state=State.OK, summary=f'Duplex: {asg_interface.asgNetIfDuplex}')
 
 
 register.snmp_section(
@@ -225,6 +212,10 @@ register.check_plugin(
     service_name='ASG Interface %s',
     discovery_function=discovery_checkpoint_asg_interface,
     check_function=check_checkpoint_asg_interface,
-    check_default_parameters={},
+    check_default_parameters={
+        'state_not_full_duplex': 2,
+        'state_not_up_up': 2,
+        'state_speed_changed': 1,
+    },
     check_ruleset_name='checkpoint_asg_interface',
-)
\ No newline at end of file
+)
diff --git a/checkpoint_asg_interface.mkp b/checkpoint_asg_interface.mkp
index 8f761411c1f27b9b1ca53ae97818f0d6943510a6..c51fc3c95c7b473741b087ca78e73bbb6d9c3ef2 100644
Binary files a/checkpoint_asg_interface.mkp and b/checkpoint_asg_interface.mkp differ
diff --git a/packages/checkpoint_asg_interface b/packages/checkpoint_asg_interface
index a7a370c88c964d362a37bcb59ab91c81e5fed38b..039db6191c6eb3e8da8cd612e5e1f773389e1a8c 100644
--- a/packages/checkpoint_asg_interface
+++ b/packages/checkpoint_asg_interface
@@ -4,11 +4,12 @@
                 ' - 2021-03-03: rewrite for CMK 2.x\n',
  'download_url': 'http://thl-cmk.hopto.org/',
  'files': {'agent_based': ['checkpoint_asg_interface.py'],
-           'checkman': ['checkpoint_asg_interface']},
+           'checkman': ['checkpoint_asg_interface'],
+           'web': ['plugins/wato/checkpoint_asg_interface.py']},
  'name': 'checkpoint_asg_interface',
- 'num_files': 2,
+ 'num_files': 3,
  'title': 'Check Point Maestro SMO interfaces',
- 'version': '20201109.v0.1',
- 'version.min_required': '2.0.0b8',
+ 'version': '20210911.v0.2',
+ 'version.min_required': '2.0.0',
  'version.packaged': '2021.07.14',
  'version.usable_until': None}
\ No newline at end of file
diff --git a/web/plugins/wato/checkpoint_asg_interface.py b/web/plugins/wato/checkpoint_asg_interface.py
new file mode 100644
index 0000000000000000000000000000000000000000..a7c7e7e77c6790736ea986beb8079a8f343153b6
--- /dev/null
+++ b/web/plugins/wato/checkpoint_asg_interface.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+#
+from cmk.gui.i18n import _
+from cmk.gui.valuespec import (
+    Dictionary,
+    TextAscii,
+    Tuple,
+    Integer,
+    Transform,
+    MonitoringState,
+)
+
+from cmk.gui.plugins.wato import (
+    CheckParameterRulespecWithItem,
+    rulespec_registry,
+    RulespecGroupCheckParametersNetworking,
+)
+
+
+def _parameter_valuespec_checkpoint_asg_interface():
+    return Transform(
+        Dictionary(elements=[
+            ('state_not_full_duplex',
+             MonitoringState(
+                 default_value=2,
+                 title=_('State if not Full duplex'),
+                 help=_('Monitoring state if interface not in Full duplex state'),
+             )),
+            ('state_not_up_up',
+             MonitoringState(
+                 default_value=2,
+                 title=_('State if not Up/Up'),
+                 help=_('Monitoring state if interface not in Up/Up state'),
+             )),
+            ('state_speed_changed',
+             MonitoringState(
+                 default_value=1,
+                 title=_('State if speed changed'),
+                 help=_('Monitoring state if interface is differs from discovery time'),
+             )),
+        ]))
+
+
+rulespec_registry.register(
+    CheckParameterRulespecWithItem(
+        check_group_name='checkpoint_asg_interface',
+        group=RulespecGroupCheckParametersNetworking,
+        match_type='dict',
+        parameter_valuespec=_parameter_valuespec_checkpoint_asg_interface,
+        title=lambda: _('Check Point ASG Cores'),
+        item_spec=lambda: TextAscii(title=_('Interface name'), ),
+
+    ))