diff --git a/agent_based/cisco_bgp_peer.py b/agent_based/cisco_bgp_peer.py
index 7aeb6768ff1383f39fe690bd2e4b0a07aba1cb4d..9f1a4ff240bedcf137df66207bc768321d932792 100644
--- a/agent_based/cisco_bgp_peer.py
+++ b/agent_based/cisco_bgp_peer.py
@@ -51,8 +51,10 @@
 # 2022.04.22: moved inventory plugin to inv_cisco_bgp_peer.py
 # 2022-04-29: added info if device is admin prefix limit capable (device_admin_limit)
 # 2022-04-30: code cleanup/streamlining
+# 2022-05-09: added item to BgpPeer class, this is used in the discovery function
 #
 
+import copy
 from typing import List, Dict, Optional, Tuple
 from dataclasses import dataclass
 
@@ -95,7 +97,6 @@ class CiscoPrefixes:
 def parse_cisco_bgp_peer(string_table: List[StringTable]) -> Dict[str, BgpPeer]:
     cbgpPeer2Entry, cbgpPeer2AddrFamily = string_table
 
-    peer_table = {}
     peer_prefixes = {}
     # create dictionary by peer address and list of entries per address family
     for entry in cbgpPeer2AddrFamily:
@@ -140,7 +141,8 @@ def parse_cisco_bgp_peer(string_table: List[StringTable]) -> Dict[str, BgpPeer]:
             if prefixes:
                 for address_family in prefixes:
                     item = f'{remote_address} {address_family.address_family}'
-                    peer_table[item] = bgp_peer[remote_address]
+                    temp_bgp_peer = copy.deepcopy(bgp_peer)
+                    peer_table[item] = temp_bgp_peer[remote_address]
                     peer_table[item].accepted_prefixes = address_family.accepted_prefixes
                     peer_table[item].prefix_admin_limit = address_family.prefix_admin_limit
                     peer_table[item].prefix_clear_threshold = address_family.prefix_clear_threshold
@@ -148,6 +150,7 @@ def parse_cisco_bgp_peer(string_table: List[StringTable]) -> Dict[str, BgpPeer]:
                     peer_table[item].device_admin_limit = True
                     peer_table[item].metric_rate += address_family.metric_count
                     peer_table[item].metric_rate += address_family.metric_rate
+                    peer_table[item].item['address_family'] = address_family.address_family
             else:
                 peer_table.update(bgp_peer)
 
@@ -211,13 +214,20 @@ def parse_cisco_bgp_peer_3(string_table: StringByteTable) -> Optional[Dict[str,
     peer_table = {}
     for entry in string_table:
         if entry[0] == '1':  # IPv4 address
-            entry[1] = '.'.join(f'{m}' for m in entry[1])
+            remote_address = '.'.join(f'{m}' for m in entry[1])
+            entry[1] = remote_address
+            routing_instance = None
             if entry[2] != 'default':
-                entry[1] += f' vrf {entry[2]}'
+                routing_instance = f'vrf {entry[2]}'
+                # entry[1] += f' {routing_instance}'
             entry.pop(2)  # remove vrf name
             entry.pop(0)  # remove remote address type
             bgp_peer = bgp_get_peer_entry(entry)
             if bgp_peer:
+                bgp_peer[remote_address].item['routing_instance'] = routing_instance
+                if routing_instance:
+                    item = f'{remote_address} {routing_instance}'
+                    bgp_peer = {item: bgp_peer[remote_address]}
                 peer_table.update(bgp_peer)
     return peer_table
 
diff --git a/cisco_bgp_peer.mkp b/cisco_bgp_peer.mkp
index 8a39e699cfcc9f11d07a6c6e047ae4fd862c2f85..8916e2b43f32609f8e5bac57a4c781b9931752ac 100644
Binary files a/cisco_bgp_peer.mkp and b/cisco_bgp_peer.mkp differ
diff --git a/packages/cisco_bgp_peer b/packages/cisco_bgp_peer
index f44dd4f6aa0224d450c26a432ec12dfed60f956c..a7901ecff7dd319a305a287d0a9cd60dfd667d8d 100644
--- a/packages/cisco_bgp_peer
+++ b/packages/cisco_bgp_peer
@@ -26,7 +26,7 @@
  'name': 'cisco_bgp_peer',
  'num_files': 3,
  'title': 'Cisco BGP Peer',
- 'version': '20220422.v.0.6',
+ 'version': '20220509.v.0.7',
  'version.min_required': '2.0.0',
  'version.packaged': '2021.09.20',
  'version.usable_until': None}
\ No newline at end of file