diff --git a/database/dbintf.go b/database/dbintf.go
index b8b491f..8a6a43b 100644
--- a/database/dbintf.go
+++ b/database/dbintf.go
@@ -17,6 +17,7 @@
 
 import (
 	"net"
+	"context"
 
 	"voltha-go-controller/internal/pkg/of"
 	"github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore"
@@ -26,132 +27,132 @@
 
 // DBIntf defines db related methods
 type DBIntf interface {
-	Get(key string) (string, error)
-	Put(fullKeyPath string, value string) error
-	Del(path string) error
-	List(key string) (map[string]*kvstore.KVPair, error)
-	DeleteAll(path string) error
-	DeleteAllUnderHashKey(hashKeyPrefix string) error
-	GetOlt(deviceID string) (string, error)
-	PutOlt(deviceID string, value string) error
-	DelOlt(deviceID string) error
-	GetFlow(deviceID string, flowID uint64) (string, error)
-	GetFlows(deviceID string) (map[string]*kvstore.KVPair, error)
-	PutFlow(deviceID string, flowID uint64, value string) error
-	DelFlow(deviceID string, flowID uint64) error
-	PutGroup(deviceID string, groupID uint32, value string) error
-	GetGroup(deviceID string, groupID uint32) (string, error)
-	GetGroups(deviceID string) (map[string]*kvstore.KVPair, error)
-	DelGroup(deviceID string, groupID uint32) error
-	DelAllGroup(string) error
-	DelAllPorts(deviceID string) error
-	DelPort(deviceID string, portID uint32) error
-	PutPort(deviceID string, portID uint32, value string) error
-	GetPort(deviceID string, portID uint32) (string, error)
-	GetPorts(deviceID string) (map[string]*kvstore.KVPair, error)
-	PutDeviceMeter(deviceID string, meterID uint32, value string) error
-	GetDeviceMeter(deviceID string, meterID uint32) (string, error)
-	GetDeviceMeters(deviceID string) (map[string]*kvstore.KVPair, error)
-	DelDeviceMeter(deviceID string, meterID uint32) error
-	GetService(name string) (string, error)
-	GetServices() (map[string]*kvstore.KVPair, error)
-	PutService(name string, value string) error
-	DelService(name string) error
-	GetVnets() (map[string]*kvstore.KVPair, error)
-	GetVnet(name string) (string, error)
-	PutVnet(name string, value string) error
-	DelVnet(name string) error
-	GetVpvs() (map[string]*kvstore.KVPair, error)
-	GetVpv(port string, SVlan uint16, CVlan uint16, UniVlan uint16) (string, error)
-	PutVpv(port string, SVlan uint16, CVlan uint16, UniVlan uint16, value string) error
-	DelVpv(port string, SVlan uint16, CVlan uint16, UniVlan uint16) error
-	GetMvlans() (map[string]*kvstore.KVPair, error)
-	GetMvlan(mvlan uint16) (string, error)
-	PutMvlan(mvlan uint16, value string) error
-	DelMvlan(mvlan uint16) error
-	DelIGMPCfg() error
-	GetHealth() (string, error)
-	PutHealth(value string) error
-	DelHealth() error
-	GetMeters() (map[string]*kvstore.KVPair, error)
-	GetMeter(name string) (string, error)
-	PutMeter(name string, value string) error
-	DelMeter(name string) error
-	DelAllMeter(device string) error
-	GetIgmpGroups() (map[string]*kvstore.KVPair, error)
-	GetIgmpGroup(id string) (string, error)
-	PutIgmpGroup(id string, value string) error
-	DelIgmpGroup(id string) error
-	GetAllIgmpDevices() (map[string]*kvstore.KVPair, error)
-	GetPrevIgmpDevices(mvlan of.VlanType, gid string) (map[string]*kvstore.KVPair, error)
-	GetIgmpDevices(mvlan of.VlanType, gid string, gip net.IP) (map[string]*kvstore.KVPair, error)
-	GetIgmpDevice(mvlan of.VlanType, gid string, gip net.IP, device string) (string, error)
-	PutIgmpDevice(mvlan of.VlanType, gid string, gip net.IP, device string, value string) error
-	DelIgmpDevice(mvlan of.VlanType, gid string, gip net.IP, device string) error
-	GetAllIgmpChannels() (map[string]*kvstore.KVPair, error)
-	GetPrevIgmpChannels(gname string, device string) (map[string]*kvstore.KVPair, error)
-	GetIgmpChannels(mvlan of.VlanType, gname string, device string) (map[string]*kvstore.KVPair, error)
-	GetIgmpChannel(mvlan of.VlanType, gName string, device string, gip net.IP) (string, error)
-	PutIgmpChannel(mvlan of.VlanType, gName string, device string, gip net.IP, value string) error
-	DelIgmpChannel(mvlan of.VlanType, gName string, device string, gip net.IP) error
-	GetAllIgmpRcvrs() (map[string]*kvstore.KVPair, error)
-	GetPrevIgmpRcvrs(gip net.IP, device string) (map[string]*kvstore.KVPair, error)
-	GetIgmpRcvrs(mvlan of.VlanType, gip net.IP, device string) (map[string]*kvstore.KVPair, error)
-	GetIgmpRcvr(mvlan of.VlanType, gip net.IP, device string, rcvr string) (string, error)
-	PutIgmpRcvr(mvlan of.VlanType, gip net.IP, device string, rcvr string, value string) error
-	DelIgmpRcvr(mvlan of.VlanType, gip net.IP, device string, rcvr string) error
-	DelAllIgmpRcvr(mvlan of.VlanType, gip net.IP, device string) error
-	DelAllRoutesForDevice(device string) error
-	DelNbDevicePort(device string, ponPortID uint32)
-	GetAllNbPorts(deviceID string) (map[string]*kvstore.KVPair, error)
-	GetMigrationInfo() (string, error)
-	PutMigrationInfo(value string) error
-	DelMigrationInfo() error
-	GetAllPonCounters(device string) (map[string]*kvstore.KVPair, error)
-	GetPonCounter(device string, ponID string) (string, error)
-	PutPonCounter(device string, ponID string, value string) error
-	DelPonCounter(device string, ponID string) error
-	GetAllPonChannelCounters(device string, ponID string) (map[string]*kvstore.KVPair, error)
-	GetPonChannelCounter(device string, ponID string, channel string) (string, error)
-	PutNbDevicePort(device string, ponPortID uint32, value string)
-	PutPonChannelCounter(device string, ponID string, channel string, value string) error
-	DelPonChannelCounter(device string, ponID string, channel string) error
-	DelAllPONCounters(device string) error
-	DelPONCounters(device string, ponID string)
-	GetAllServiceChannelCounters(serviceName string) (map[string]*kvstore.KVPair, error)
-	GetServiceChannelCounter(serviceName string, channel string) (string, error)
-	PutServiceChannelCounter(serviceName string, channel string, value string) error
-	DelServiceChannelCounter(serviceName string, channel string) error
-	DelAllServiceChannelCounter(serviceName string) error
-	PutOltIgmpCounters(device string, value string) error
-	GetOltIgmpCounter(device string) (string, error)
-	PutFlowHash(deviceID string, value string) error
-	GetFlowHash(deviceID string) (string, error)
-	OltExists(deviceID string) bool
-	GetIgmpProfiles() (map[string]*kvstore.KVPair, error)
-	GetIgmpProfile(name string) (string, error)
-	PutIgmpProfile(name string, value string) error
-	DelIgmpProfile(name string) error
-	GetMcastConfigs() (map[string]*kvstore.KVPair, error)
-	GetMcastConfig(name string) (string, error)
-	PutMcastConfig(name string, value string) error
-	DelMcastConfig(name string) error
-	PutPortAlarmProfile(portAlarmProfileID string, value string)
-	GetPortAlarmProfile(portAlarmProfileID string) (map[string]*kvstore.KVPair, error)
-	DelPortAlarmProfile(portAlarmProfileID string)
-	PutPortAlarmData(deviceID string, portID uint32, value string)
-	GetPortAlarmData(deviceID string, portID uint32) (string, error)
-	DelPortAlarmData(deviceID string, portID uint32)
-	GetAllPortAlarmData(deviceID string) (map[string]*kvstore.KVPair, error)
-	PutSubAlarmData(deviceID string, portName string, value string)
-	GetSubAlarmData(deviceID string, portName string) (string, error)
-	DelSubAlarmData(deviceID string, portName string)
-	GetAllSubAlarmData(deviceID string) (map[string]*kvstore.KVPair, error)
-	PutMigrateServicesReq(deviceID string, vlan string, value string) error
-	GetMigrateServicesReq(deviceID string, vlan string) (string, error)
-	GetAllMigrateServicesReq(deviceID string) (map[string]*kvstore.KVPair, error)
-	DelMigrateServicesReq(deviceID string, vlan string) error
-	DelAllMigrateServicesReq(deviceID string) error
+	Get(ctx context.Context, key string) (string, error)
+	Put(ctx context.Context, fullKeyPath string, value string) error
+	Del(ctx context.Context, path string) error
+	List(ctx context.Context, key string) (map[string]*kvstore.KVPair, error)
+	DeleteAll(ctx context.Context, path string) error
+	DeleteAllUnderHashKey(ctx context.Context, hashKeyPrefix string) error
+	GetOlt(ctx context.Context, deviceID string) (string, error)
+	PutOlt(ctx context.Context, deviceID string, value string) error
+	DelOlt(ctx context.Context, deviceID string) error
+	GetFlow(ctx context.Context, deviceID string, flowID uint64) (string, error)
+	GetFlows(ctx context.Context, deviceID string) (map[string]*kvstore.KVPair, error)
+	PutFlow(ctx context.Context, deviceID string, flowID uint64, value string) error
+	DelFlow(ctx context.Context, deviceID string, flowID uint64) error
+	PutGroup(ctx context.Context, deviceID string, groupID uint32, value string) error
+	GetGroup(ctx context.Context, deviceID string, groupID uint32) (string, error)
+	GetGroups(ctx context.Context, deviceID string) (map[string]*kvstore.KVPair, error)
+	DelGroup(ctx context.Context, deviceID string, groupID uint32) error
+	DelAllGroup(ctx context.Context, deviceID string) error
+	DelAllPorts(ctx context.Context, deviceID string) error
+	DelPort(ctx context.Context, deviceID string, portID uint32) error
+	PutPort(ctx context.Context, deviceID string, portID uint32, value string) error
+	GetPort(ctx context.Context, deviceID string, portID uint32) (string, error)
+	GetPorts(ctx context.Context, deviceID string) (map[string]*kvstore.KVPair, error)
+	PutDeviceMeter(ctx context.Context, deviceID string, meterID uint32, value string) error
+	GetDeviceMeter(ctx context.Context, deviceID string, meterID uint32) (string, error)
+	GetDeviceMeters(ctx context.Context, deviceID string) (map[string]*kvstore.KVPair, error)
+	DelDeviceMeter(ctx context.Context, deviceID string, meterID uint32) error
+	GetService(ctx context.Context, name string) (string, error)
+	GetServices(ctx context.Context) (map[string]*kvstore.KVPair, error)
+	PutService(ctx context.Context, name string, value string) error
+	DelService(ctx context.Context, name string) error
+	GetVnets(ctx context.Context) (map[string]*kvstore.KVPair, error)
+	GetVnet(ctx context.Context, name string) (string, error)
+	PutVnet(ctx context.Context, name string, value string) error
+	DelVnet(ctx context.Context, name string) error
+	GetVpvs(ctx context.Context) (map[string]*kvstore.KVPair, error)
+	GetVpv(ctx context.Context, port string, SVlan uint16, CVlan uint16, UniVlan uint16) (string, error)
+	PutVpv(ctx context.Context, port string, SVlan uint16, CVlan uint16, UniVlan uint16, value string) error
+	DelVpv(ctx context.Context, port string, SVlan uint16, CVlan uint16, UniVlan uint16) error
+	GetMvlans(ctx context.Context) (map[string]*kvstore.KVPair, error)
+	GetMvlan(ctx context.Context, mvlan uint16) (string, error)
+	PutMvlan(ctx context.Context, mvlan uint16, value string) error
+	DelMvlan(ctx context.Context, mvlan uint16) error
+	DelIGMPCfg(ctx context.Context) error
+	GetHealth(ctx context.Context) (string, error)
+	PutHealth(ctx context.Context, value string) error
+	DelHealth(ctx context.Context) error
+	GetMeters(ctx context.Context) (map[string]*kvstore.KVPair, error)
+	GetMeter(ctx context.Context, name string) (string, error)
+	PutMeter(ctx context.Context, name string, value string) error
+	DelMeter(ctx context.Context, name string) error
+	DelAllMeter(ctx context.Context, device string) error
+	GetIgmpGroups(ctx context.Context) (map[string]*kvstore.KVPair, error)
+	GetIgmpGroup(ctx context.Context, id string) (string, error)
+	PutIgmpGroup(ctx context.Context, id string, value string) error
+	DelIgmpGroup(ctx context.Context, id string) error
+	GetAllIgmpDevices(ctx context.Context) (map[string]*kvstore.KVPair, error)
+	GetPrevIgmpDevices(ctx context.Context, mvlan of.VlanType, gid string) (map[string]*kvstore.KVPair, error)
+	GetIgmpDevices(ctx context.Context, mvlan of.VlanType, gid string, gip net.IP) (map[string]*kvstore.KVPair, error)
+	GetIgmpDevice(ctx context.Context, mvlan of.VlanType, gid string, gip net.IP, device string) (string, error)
+	PutIgmpDevice(ctx context.Context, mvlan of.VlanType, gid string, gip net.IP, device string, value string) error
+	DelIgmpDevice(ctx context.Context, mvlan of.VlanType, gid string, gip net.IP, device string) error
+	GetAllIgmpChannels(ctx context.Context) (map[string]*kvstore.KVPair, error)
+	GetPrevIgmpChannels(ctx context.Context, gname string, device string) (map[string]*kvstore.KVPair, error)
+	GetIgmpChannels(ctx context.Context, mvlan of.VlanType, gname string, device string) (map[string]*kvstore.KVPair, error)
+	GetIgmpChannel(ctx context.Context, mvlan of.VlanType, gName string, device string, gip net.IP) (string, error)
+	PutIgmpChannel(ctx context.Context, mvlan of.VlanType, gName string, device string, gip net.IP, value string) error
+	DelIgmpChannel(ctx context.Context, mvlan of.VlanType, gName string, device string, gip net.IP) error
+	GetAllIgmpRcvrs(ctx context.Context) (map[string]*kvstore.KVPair, error)
+	GetPrevIgmpRcvrs(ctx context.Context, gip net.IP, device string) (map[string]*kvstore.KVPair, error)
+	GetIgmpRcvrs(ctx context.Context, mvlan of.VlanType, gip net.IP, device string) (map[string]*kvstore.KVPair, error)
+	GetIgmpRcvr(ctx context.Context, mvlan of.VlanType, gip net.IP, device string, rcvr string) (string, error)
+	PutIgmpRcvr(ctx context.Context, mvlan of.VlanType, gip net.IP, device string, rcvr string, value string) error
+	DelIgmpRcvr(ctx context.Context, mvlan of.VlanType, gip net.IP, device string, rcvr string) error
+	DelAllIgmpRcvr(ctx context.Context, mvlan of.VlanType, gip net.IP, device string) error
+	DelAllRoutesForDevice(ctx context.Context, device string) error
+	DelNbDevicePort(ctx context.Context, device string, ponPortID uint32)
+	GetAllNbPorts(ctx context.Context, deviceID string) (map[string]*kvstore.KVPair, error)
+	GetMigrationInfo(ctx context.Context) (string, error)
+	PutMigrationInfo(ctx context.Context, value string) error
+	DelMigrationInfo(ctx context.Context) error
+	GetAllPonCounters(ctx context.Context, device string) (map[string]*kvstore.KVPair, error)
+	GetPonCounter(ctx context.Context, device string, ponID string) (string, error)
+	PutPonCounter(ctx context.Context, device string, ponID string, value string) error
+	DelPonCounter(ctx context.Context, device string, ponID string) error
+	GetAllPonChannelCounters(ctx context.Context, device string, ponID string) (map[string]*kvstore.KVPair, error)
+	GetPonChannelCounter(ctx context.Context, device string, ponID string, channel string) (string, error)
+	PutNbDevicePort(ctx context.Context, device string, ponPortID uint32, value string)
+	PutPonChannelCounter(ctx context.Context, device string, ponID string, channel string, value string) error
+	DelPonChannelCounter(ctx context.Context, device string, ponID string, channel string) error
+	DelAllPONCounters(ctx context.Context, device string) error
+	DelPONCounters(ctx context.Context, device string, ponID string)
+	GetAllServiceChannelCounters(ctx context.Context, serviceName string) (map[string]*kvstore.KVPair, error)
+	GetServiceChannelCounter(ctx context.Context, serviceName string, channel string) (string, error)
+	PutServiceChannelCounter(ctx context.Context, serviceName string, channel string, value string) error
+	DelServiceChannelCounter(ctx context.Context, serviceName string, channel string) error
+	DelAllServiceChannelCounter(ctx context.Context, serviceName string) error
+	PutOltIgmpCounters(ctx context.Context, device string, value string) error
+	GetOltIgmpCounter(ctx context.Context, device string) (string, error)
+	PutFlowHash(ctx context.Context, deviceID string, value string) error
+	GetFlowHash(ctx context.Context, deviceID string) (string, error)
+	OltExists(ctx context.Context, deviceID string) bool
+	GetIgmpProfiles(ctx context.Context) (map[string]*kvstore.KVPair, error)
+	GetIgmpProfile(ctx context.Context, name string) (string, error)
+	PutIgmpProfile(ctx context.Context, name string, value string) error
+	DelIgmpProfile(ctx context.Context, name string) error
+	GetMcastConfigs(ctx context.Context) (map[string]*kvstore.KVPair, error)
+	GetMcastConfig(ctx context.Context, name string) (string, error)
+	PutMcastConfig(ctx context.Context, name string, value string) error
+	DelMcastConfig(ctx context.Context, name string) error
+	PutPortAlarmProfile(ctx context.Context, portAlarmProfileID string, value string)
+	GetPortAlarmProfile(ctx context.Context, portAlarmProfileID string) (map[string]*kvstore.KVPair, error)
+	DelPortAlarmProfile(ctx context.Context, portAlarmProfileID string)
+	PutPortAlarmData(ctx context.Context, deviceID string, portID uint32, value string)
+	GetPortAlarmData(ctx context.Context, deviceID string, portID uint32) (string, error)
+	DelPortAlarmData(ctx context.Context, deviceID string, portID uint32)
+	GetAllPortAlarmData(ctx context.Context, deviceID string) (map[string]*kvstore.KVPair, error)
+	PutSubAlarmData(ctx context.Context, deviceID string, portName string, value string)
+	GetSubAlarmData(ctx context.Context, deviceID string, portName string) (string, error)
+	DelSubAlarmData(ctx context.Context, deviceID string, portName string)
+	GetAllSubAlarmData(ctx context.Context, deviceID string) (map[string]*kvstore.KVPair, error)
+	PutMigrateServicesReq(ctx context.Context, deviceID string, vlan string, value string) error
+	GetMigrateServicesReq(ctx context.Context, deviceID string, vlan string) (string, error)
+	GetAllMigrateServicesReq(ctx context.Context, deviceID string) (map[string]*kvstore.KVPair, error)
+	DelMigrateServicesReq(ctx context.Context, deviceID string, vlan string) error
+	DelAllMigrateServicesReq(ctx context.Context, deviceID string) error
 }
 
 //GetDatabase - returns databse operation based on configuration
