<groupId>org.onap.dcaegen2.services.components</groupId>
        <artifactId>slice-analysis-ms</artifactId>
-       <version>1.0.1-SNAPSHOT</version>
+       <version>1.0.2-SNAPSHOT</version>
        <name>dcaegen2-services-slice-analysis-ms</name>
        <description>Network slice PM analyser</description>
         <packaging>jar</packaging>
 
                 minPercentageChange = jsonObject.get("sliceanalysisms.minPercentageChange").getAsInt();
                 initialDelaySeconds = jsonObject.get("sliceanalysisms.initialDelaySeconds").getAsLong();
 
-                aafUsername = jsonObject.get("aafUsername").getAsString();
-                aafPassword = jsonObject.get("aafPassword").getAsString();
-                
+                if(jsonObject.get("aafUsername") == null) {
+                        aafUsername = null;
+                }
+                else {
+                        aafUsername = jsonObject.get("aafUsername").getAsString();
+                }
+                if(jsonObject.get("aafPassword") == null) {
+                        aafPassword = null;
+                }
+                else {
+                        aafPassword = jsonObject.get("aafPassword").getAsString();
+                }               
                 log.info("configuration from CBS {}", this);
         }
 }
 
 
 import org.onap.slice.analysis.ms.configdb.IConfigDbService;
 import org.onap.slice.analysis.ms.models.Configuration;
+import org.onap.slice.analysis.ms.models.SubCounter;
 import org.onap.slice.analysis.ms.utils.BeanUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
        private IConfigDbService configDbService;
        private SnssaiSamplesProcessor snssaiSamplesProcessor;
        private long initialDelaySec; 
+       private int samples;
 
        /**
         * Default constructor.
                super();
                this.pmDataQueue = BeanUtil.getBean(PmDataQueue.class);
                this.configDbService = BeanUtil.getBean(IConfigDbService.class);
-               this.snssaiSamplesProcessor = BeanUtil.getBean(SnssaiSamplesProcessor.class);
                this.initialDelaySec = Configuration.getInstance().getInitialDelaySeconds();
+               this.samples = Configuration.getInstance().getSamples();
        }
 
        /**
        @Override
        public void run() {    
                boolean done = false;
-               String snssai = "";
                boolean result = false;
+               String snssai = "";
                List<String> nfs = null;
                while (!done) {
                        try {
                                Thread.sleep(initialDelaySec);
+                               log.info("Starting Consumer Thread");
                                snssai = pmDataQueue.getSnnsaiFromQueue();
                                if (!snssai.equals("")) {
                                        log.info("Consumer thread processing data for s-nssai {}",snssai);    
                                                pmDataQueue.putSnssaiToQueue(snssai);
                                                log.error("Exception caught while fetching nfs of snssai {}, {}", snssai, e.getMessage());
                                        }
-                                       if(nfs != null) {
+                                       if(nfs != null && checkForEnoughSamples(nfs, snssai)) {
+                                                       this.snssaiSamplesProcessor = BeanUtil.getBean(SnssaiSamplesProcessor.class);
                                                result = snssaiSamplesProcessor.processSamplesOfSnnsai(snssai, nfs);
                                                if(!result) {
                                                        log.info("Not enough samples to process for {}",snssai);
                        }
                }
        }
+
+        /**
+         * Checks whether enough samples are available for the network functions        
+         */    
+       public boolean checkForEnoughSamples(List<String> nfs, String snssai) {
+               for(String nf : nfs) {
+                       if(! pmDataQueue.checkSamplesInQueue(new SubCounter(nf, snssai), samples)) {
+                               log.info("Not enough samples to process for network function {} of snssai {}", nf, snssai);
+                               pmDataQueue.putSnssaiToQueue(snssai);
+                               return false;
+                       }
+               }
+               return true;
+       }
 }