Yang for test: container topContainer{ list list-in-container { key planet; leaf planet { type string; } container container-in-list { leaf sun { type string; } } } } Listeners TopContainerListener, ListInContainerListener, ContainerInListListener are registered at paths: /topContainer, /topContainer/list-in-container and /topContainer/list-in-container/container-in-list respectively. 2015-08-05 23:02:34,743 | DEBUG | config-pusher | DistributedDataStore | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Registering listener: org.opendaylight.vpnservice.interfacemgr.RestartManager$TopContainerListener for path: /(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer scope: BASE 2015-08-05 23:02:34,752 | DEBUG | config-pusher | DistributedDataStore | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Registering listener: org.opendaylight.vpnservice.interfacemgr.RestartManager$ListInContainerListener for path: /(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer/list-in-container/list-in-container scope: BASE 2015-08-05 23:02:34,755 | DEBUG | config-pusher | DistributedDataStore | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Registering listener: org.opendaylight.vpnservice.interfacemgr.RestartManager$ContainerInListListener for path: /(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer/list-in-container/list-in-container/container-in-list scope: BASE Test case steps: 1. Start controller. 2. Configure following data: {topContainer : { "list-in-container": [ { "planet": "earth", "container-in-list": { "sun": "sun" } } ] } 3. Now restart te controller. You will see that only topContainerListener receives the DCN. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Please find below the logs after restart: 2015-08-05 23:02:34,743 | DEBUG | config-pusher | DistributedDataStore | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Registering listener: org.opendaylight.vpnservice.interfacemgr.RestartManager$TopContainerListener for path: /(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer scope: BASE 2015-08-05 23:02:34,744 | DEBUG | config-pusher | ActorContext | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Sending message class org.opendaylight.controller.cluster.datastore.messages.FindLocalShard to Actor[akka://opendaylight-cluster-data/user/shardmanager-config#-388094241] 2015-08-05 23:02:34,744 | DEBUG | lt-dispatcher-14 | DataChangeListener | 164 - org.opendaylight.controller.sal-clustering-commons - 1.2.1.SNAPSHOT | Actor created Actor[akka://opendaylight-cluster-data/user/$s#-693476289] 2015-08-05 23:02:34,745 | TRACE | lt-dispatcher-25 | ShardManager | 164 - org.opendaylight.controller.sal-clustering-commons - 1.2.1.SNAPSHOT | Received message FindLocalShard 2015-08-05 23:02:34,745 | TRACE | lt-dispatcher-25 | ShardManager | 164 - org.opendaylight.controller.sal-clustering-commons - 1.2.1.SNAPSHOT | Done handling message FindLocalShard 2015-08-05 23:02:34,745 | DEBUG | lt-dispatcher-14 | ActorContext | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Local shard found Actor[akka://opendaylight-cluster-data/user/shardmanager-config/member-1-shard-default-config#-1000679997] 2015-08-05 23:02:34,746 | DEBUG | lt-dispatcher-14 | ActorContext | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Sending message class org.opendaylight.controller.cluster.datastore.messages.RegisterChangeListener to Actor[akka://opendaylight-cluster-data/user/shardmanager-config/member-1-shard-default-config#-1000679997] 2015-08-05 23:02:34,746 | DEBUG | lt-dispatcher-14 | DataChangeListenerSupport | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | member-1-shard-default-config: registerDataChangeListener for /(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer, leader: true 2015-08-05 23:02:34,747 | DEBUG | lt-dispatcher-14 | DataChangeListenerSupport | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | member-1-shard-default-config: Registering for path /(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer 2015-08-05 23:02:34,747 | DEBUG | lt-dispatcher-14 | RegistrationTreeNode | 146 - org.opendaylight.controller.sal-core-spi - 1.2.1.SNAPSHOT | Registration AbstractObjectRegistration{instance=org.opendaylight.controller.cluster.datastore.DataChangeListenerProxy@268e10b5} added 2015-08-05 23:02:34,748 | DEBUG | lt-dispatcher-15 | DataChangeListener | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Enabled notifications for listener org.opendaylight.vpnservice.interfacemgr.RestartManager$TopContainerListener 2015-08-05 23:02:34,748 | DEBUG | lt-dispatcher-14 | DataChangeListenerSupport | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | member-1-shard-default-config: registerDataChangeListener sending reply, listenerRegistrationPath = akka://opendaylight-cluster-data/user/shardmanager-config/member-1-shard-default-config/$d 2015-08-05 23:02:34,749 | DEBUG | lt-dispatcher-15 | DataChangeListenerRegistration | 164 - org.opendaylight.controller.sal-clustering-commons - 1.2.1.SNAPSHOT | Actor created Actor[akka://opendaylight-cluster-data/user/shardmanager-config/member-1-shard-default-config/$d#1755424784] 2015-08-05 23:02:34,750 | DEBUG | lt-dispatcher-15 | DataChangeListener | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Sending change notification DOMImmutableDataChangeEvent [created=[/(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer], updated=[], removed=[]] to listener org.opendaylight.vpnservice.interfacemgr.RestartManager$TopContainerListener 2015-08-05 23:02:34,752 | DEBUG | config-pusher | DistributedDataStore | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Registering listener: org.opendaylight.vpnservice.interfacemgr.RestartManager$ListInContainerListener for path: /(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer/list-in-container/list-in-container scope: BASE 2015-08-05 23:02:34,753 | DEBUG | config-pusher | ActorContext | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Sending message class org.opendaylight.controller.cluster.datastore.messages.FindLocalShard to Actor[akka://opendaylight-cluster-data/user/shardmanager-config#-388094241] 2015-08-05 23:02:34,753 | DEBUG | lt-dispatcher-25 | DataChangeListener | 164 - org.opendaylight.controller.sal-clustering-commons - 1.2.1.SNAPSHOT | Actor created Actor[akka://opendaylight-cluster-data/user/$t#1207527846] 2015-08-05 23:02:34,753 | TRACE | lt-dispatcher-18 | ShardManager | 164 - org.opendaylight.controller.sal-clustering-commons - 1.2.1.SNAPSHOT | Received message FindLocalShard 2015-08-05 23:02:34,753 | TRACE | lt-dispatcher-18 | ShardManager | 164 - org.opendaylight.controller.sal-clustering-commons - 1.2.1.SNAPSHOT | Done handling message FindLocalShard 2015-08-05 23:02:34,753 | DEBUG | lt-dispatcher-25 | ActorContext | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Local shard found Actor[akka://opendaylight-cluster-data/user/shardmanager-config/member-1-shard-default-config#-1000679997] 2015-08-05 23:02:34,753 | DEBUG | lt-dispatcher-25 | ActorContext | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Sending message class org.opendaylight.controller.cluster.datastore.messages.RegisterChangeListener to Actor[akka://opendaylight-cluster-data/user/shardmanager-config/member-1-shard-default-config#-1000679997] 2015-08-05 23:02:34,753 | DEBUG | lt-dispatcher-14 | DataChangeListenerSupport | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | member-1-shard-default-config: registerDataChangeListener for /(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer/list-in-container/list-in-container, leader: true 2015-08-05 23:02:34,754 | DEBUG | lt-dispatcher-14 | DataChangeListenerSupport | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | member-1-shard-default-config: Registering for path /(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer/list-in-container/list-in-container 2015-08-05 23:02:34,754 | DEBUG | lt-dispatcher-25 | DataChangeListener | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Enabled notifications for listener org.opendaylight.vpnservice.interfacemgr.RestartManager$ListInContainerListener 2015-08-05 23:02:34,754 | DEBUG | lt-dispatcher-14 | RegistrationTreeNode | 146 - org.opendaylight.controller.sal-core-spi - 1.2.1.SNAPSHOT | Registration AbstractObjectRegistration{instance=org.opendaylight.controller.cluster.datastore.DataChangeListenerProxy@7ec8ce83} added 2015-08-05 23:02:34,754 | DEBUG | lt-dispatcher-14 | DataChangeListenerSupport | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | member-1-shard-default-config: registerDataChangeListener sending reply, listenerRegistrationPath = akka://opendaylight-cluster-data/user/shardmanager-config/member-1-shard-default-config/$e 2015-08-05 23:02:34,754 | DEBUG | lt-dispatcher-25 | DataChangeListenerRegistration | 164 - org.opendaylight.controller.sal-clustering-commons - 1.2.1.SNAPSHOT | Actor created Actor[akka://opendaylight-cluster-data/user/shardmanager-config/member-1-shard-default-config/$e#-594881953] 2015-08-05 23:02:34,755 | DEBUG | config-pusher | DistributedDataStore | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Registering listener: org.opendaylight.vpnservice.interfacemgr.RestartManager$ContainerInListListener for path: /(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer/list-in-container/list-in-container/container-in-list scope: BASE 2015-08-05 23:02:34,755 | DEBUG | config-pusher | ActorContext | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Sending message class org.opendaylight.controller.cluster.datastore.messages.FindLocalShard to Actor[akka://opendaylight-cluster-data/user/shardmanager-config#-388094241] 2015-08-05 23:02:34,755 | DEBUG | lt-dispatcher-14 | DataChangeListener | 164 - org.opendaylight.controller.sal-clustering-commons - 1.2.1.SNAPSHOT | Actor created Actor[akka://opendaylight-cluster-data/user/$u#1667005726] 2015-08-05 23:02:34,755 | TRACE | lt-dispatcher-14 | ShardManager | 164 - org.opendaylight.controller.sal-clustering-commons - 1.2.1.SNAPSHOT | Received message FindLocalShard 2015-08-05 23:02:34,755 | DEBUG | lt-dispatcher-25 | ActorContext | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Local shard found Actor[akka://opendaylight-cluster-data/user/shardmanager-config/member-1-shard-default-config#-1000679997] 2015-08-05 23:02:34,755 | DEBUG | lt-dispatcher-25 | ActorContext | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Sending message class org.opendaylight.controller.cluster.datastore.messages.RegisterChangeListener to Actor[akka://opendaylight-cluster-data/user/shardmanager-config/member-1-shard-default-config#-1000679997] 2015-08-05 23:02:34,756 | DEBUG | lt-dispatcher-18 | DataChangeListenerSupport | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | member-1-shard-default-config: registerDataChangeListener for /(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer/list-in-container/list-in-container/container-in-list, leader: true 2015-08-05 23:02:34,756 | DEBUG | lt-dispatcher-18 | DataChangeListenerSupport | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | member-1-shard-default-config: Registering for path /(urn:opendaylight:vpnservice:restart?revision=2015-03-31)topContainer/list-in-container/list-in-container/container-in-list 2015-08-05 23:02:34,756 | DEBUG | lt-dispatcher-25 | DataChangeListener | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | Enabled notifications for listener org.opendaylight.vpnservice.interfacemgr.RestartManager$ContainerInListListener 2015-08-05 23:02:34,756 | DEBUG | lt-dispatcher-18 | RegistrationTreeNode | 146 - org.opendaylight.controller.sal-core-spi - 1.2.1.SNAPSHOT | Registration AbstractObjectRegistration{instance=org.opendaylight.controller.cluster.datastore.DataChangeListenerProxy@783e4266} added 2015-08-05 23:02:34,755 | TRACE | lt-dispatcher-14 | ShardManager | 164 - org.opendaylight.controller.sal-clustering-commons - 1.2.1.SNAPSHOT | Done handling message FindLocalShard 2015-08-05 23:02:34,756 | DEBUG | lt-dispatcher-18 | DataChangeListenerSupport | 172 - org.opendaylight.controller.sal-distributed-datastore - 1.2.1.SNAPSHOT | member-1-shard-default-config: registerDataChangeListener sending reply, listenerRegistrationPath = akka://opendaylight-cluster-data/user/shardmanager-config/member-1-shard-default-config/$f 2015-08-05 23:02:34,756 | DEBUG | lt-dispatcher-25 | DataChangeListenerRegistration | 164 - org.opendaylight.controller.sal-clustering-commons - 1.2.1.SNAPSHOT | Actor created Actor[akka://opendaylight-cluster-data/user/shardmanager-config/member-1-shard-default-config/$f#-618062908] 2015-08-05 23:02:34,773 | ERROR | lt-dispatcher-15 | RestartManager | 210 - org.opendaylight.vpnservice.interfacemgr-impl - 0.1.1.SNAPSHOT | Adding TopContainer key: InstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.restart.rev150331.TopContainer, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.restart.rev150331.TopContainer]}, value=TopContainer{getListInContainer=[ListInContainer{getContainerInList=ContainerInList{getSun=sun, augmentations={}}, getPlanet=earth, augmentations={}}], augmentations={}} <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Some analysis: For each listener, DataChangeListenerSupport->ShardDataTree reads from the datatstore the corresponding path used for listener registration. In case you want to fetch a list, read can be performed either on the container which wraps the list or you can read a particular entry using /topContainer/list-in-container/list-in-container{planet}. For a wildcard listener registration for list, read is performed on the path /topContainer/list-in-container/list-in-container which does not give any data from datastore. Hence on restart, events are not recieved by such wildcard list listeners.