import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifierOptVersion;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Data used during a single REST call when updating PDP policies.
  */
 public class SessionData {
+    private static final Logger logger = LoggerFactory.getLogger(SessionData.class);
+
     /**
      * If a version string matches this, then it is just a prefix (i.e., major or
      * major.minor).
     }
 
     /**
-     * Gets the policy type, referenced by an identifier. Loads it from the cache, if possible.
-     * Otherwise, gets it from the DB.
+     * Gets the policy type, referenced by an identifier. Loads it from the cache, if
+     * possible. Otherwise, gets it from the DB.
      *
      * @param desiredType policy type identifier
      * @return the specified policy type
             throw new IllegalArgumentException("PDP name mismatch " + update.getName() + ", " + change.getName());
         }
 
+        logger.info("add update and state-change {} {} {} policies={}", update.getName(), update.getPdpGroup(),
+                        update.getPdpSubgroup(), update.getPolicies().size());
         pdpRequests.put(update.getName(), Pair.of(update, change));
     }
 
      * @param update the update to be added
      */
     public void addUpdate(PdpUpdate update) {
+        logger.info("add update {} {} {} policies={}", update.getName(), update.getPdpGroup(), update.getPdpSubgroup(),
+                        update.getPolicies().size());
         pdpRequests.compute(update.getName(), (name, data) -> Pair.of(update, (data == null ? null : data.getRight())));
     }
 
      * @param change the state-change to be added
      */
     public void addStateChange(PdpStateChange change) {
+        logger.info("add state-change {}", change.getName());
         pdpRequests.compute(change.getName(), (name, data) -> Pair.of((data == null ? null : data.getLeft()), change));
     }
 
         if (groupCache.put(name, new GroupData(newGroup, true)) != null) {
             throw new IllegalStateException("group already cached: " + name);
         }
+
+        logger.info("create cached group {}", newGroup.getName());
     }
 
     /**
             throw new IllegalStateException("group not cached: " + name);
         }
 
+        logger.info("update cached group {}", newGroup.getName());
         data.update(newGroup);
     }
 
         if (data == null) {
             List<PdpGroup> lst = dao.getPdpGroups(name);
             if (lst.isEmpty()) {
+                logger.info("unknown group {}", name);
                 return null;
             }
 
+            logger.info("cache group {}", name);
             data = new GroupData(lst.get(0));
             groupCache.put(name, data);
+
+        } else {
+            logger.info("use cached group {}", name);
         }
 
         return data.getGroup();
      */
     public List<PdpGroup> getActivePdpGroupsByPolicyType(ToscaPolicyTypeIdentifier type) throws PfModelException {
         List<GroupData> data = type2groups.get(type);
-        if (data != null) {
-            return data.stream().map(GroupData::getGroup).collect(Collectors.toList());
-        }
-
-        PdpGroupFilter filter = PdpGroupFilter.builder().policyTypeList(Collections.singletonList(type))
-                        .groupState(PdpState.ACTIVE).build();
+        if (data == null) {
+            PdpGroupFilter filter = PdpGroupFilter.builder().policyTypeList(Collections.singletonList(type))
+                            .groupState(PdpState.ACTIVE).build();
 
-        List<PdpGroup> groups = dao.getFilteredPdpGroups(filter);
+            List<PdpGroup> groups = dao.getFilteredPdpGroups(filter);
 
-        data = groups.stream().map(this::addGroup).collect(Collectors.toList());
-        type2groups.put(type, data);
+            data = groups.stream().map(this::addGroup).collect(Collectors.toList());
+            type2groups.put(type, data);
+        }
 
-        return groups;
+        return data.stream().map(GroupData::getGroup).collect(Collectors.toList());
     }
 
     /**
      */
     private GroupData addGroup(PdpGroup group) {
         GroupData data = groupCache.get(group.getName());
-        if (data != null) {
-            return data;
-        }
+        if (data == null) {
+            logger.info("cache group {}", group.getName());
+            data = new GroupData(group);
+            groupCache.put(group.getName(), data);
 
-        data = new GroupData(group);
-        groupCache.put(group.getName(), data);
+        } else {
+            logger.info("use cached group {}", group.getName());
+        }
 
         return data;
     }
         // create new groups
         List<GroupData> created = groupCache.values().stream().filter(GroupData::isNew).collect(Collectors.toList());
         if (!created.isEmpty()) {
+            if (logger.isInfoEnabled()) {
+                created.forEach(group -> logger.info("creating DB group {}", group.getGroup().getName()));
+            }
             dao.createPdpGroups(created.stream().map(GroupData::getGroup).collect(Collectors.toList()));
         }
 
         List<GroupData> updated =
                         groupCache.values().stream().filter(GroupData::isUpdated).collect(Collectors.toList());
         if (!updated.isEmpty()) {
+            if (logger.isInfoEnabled()) {
+                updated.forEach(group -> logger.info("updating DB group {}", group.getGroup().getName()));
+            }
             dao.updatePdpGroups(updated.stream().map(GroupData::getGroup).collect(Collectors.toList()));
         }
     }
      * @throws PfModelException if an error occurred
      */
     public void deleteGroupFromDb(PdpGroup group) throws PfModelException {
+        logger.info("deleting DB group {}", group.getName());
         dao.deletePdpGroup(group.getName());
     }
 }