For a triggered SMS message, check if notification flag is set. If so, send to GCM service.
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java
index e2e998a..092a243 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java
@@ -194,21 +194,38 @@
     public void sendTriggeredMessages(Map<SmsCampaign, Collection<SmsMessage>> smsDataMap) {
         try {
             if (!smsDataMap.isEmpty()) {
+                List<SmsMessage> toSaveMessages = new ArrayList<>() ;
+                List<SmsMessage> toSendNotificationMessages = new ArrayList<>() ;
                 for (Entry<SmsCampaign, Collection<SmsMessage>> entry : smsDataMap.entrySet()) {
                     Iterator<SmsMessage> smsMessageIterator = entry.getValue().iterator();
                     Collection<SmsMessageApiQueueResourceData> apiQueueResourceDatas = new ArrayList<>();
                     StringBuilder request = new StringBuilder();
                     while (smsMessageIterator.hasNext()) {
                         SmsMessage smsMessage = smsMessageIterator.next();
-                        SmsMessageApiQueueResourceData apiQueueResourceData = SmsMessageApiQueueResourceData.instance(smsMessage.getId(),
-                                null, null, null, smsMessage.getMobileNo(), smsMessage.getMessage(), entry.getKey().getProviderId());
-                        apiQueueResourceDatas.add(apiQueueResourceData);
-                        smsMessage.setStatusType(SmsMessageStatusType.WAITING_FOR_DELIVERY_REPORT.getValue());
+                        if(smsMessage.isNotification()){
+                            smsMessage.setStatusType(SmsMessageStatusType.WAITING_FOR_DELIVERY_REPORT.getValue());
+                            toSendNotificationMessages.add(smsMessage);
+                        }else {
+                            SmsMessageApiQueueResourceData apiQueueResourceData = SmsMessageApiQueueResourceData.instance(smsMessage.getId(),
+                                    null, null, null, smsMessage.getMobileNo(), smsMessage.getMessage(), entry.getKey().getProviderId());
+                            apiQueueResourceDatas.add(apiQueueResourceData);
+                            smsMessage.setStatusType(SmsMessageStatusType.WAITING_FOR_DELIVERY_REPORT.getValue());
+                            toSaveMessages.add(smsMessage) ;
+                        }
                     }
-                    this.smsMessageRepository.save(entry.getValue()) ;
-                    request.append(SmsMessageApiQueueResourceData.toJsonString(apiQueueResourceDatas));
-                    logger.info("Sending triggered SMS with request - " + request.toString());
-                    this.triggeredExecutorService.execute(new SmsTask(ThreadLocalContextUtil.getTenant(), apiQueueResourceDatas));
+                    if(toSaveMessages.size()>0){
+                        this.smsMessageRepository.save(toSaveMessages);
+                        this.smsMessageRepository.flush();
+                        //this.smsMessageRepository.save(entry.getValue());
+                        //request.append(SmsMessageApiQueueResourceData.toJsonString(apiQueueResourceDatas));
+                        //logger.info("Sending triggered SMS with request - " + request.toString());
+                        this.triggeredExecutorService.execute(new SmsTask(ThreadLocalContextUtil.getTenant(), apiQueueResourceDatas));
+                    }
+                    if(!toSendNotificationMessages.isEmpty()){
+                        this.notificationSenderService.sendNotification(toSendNotificationMessages);
+                    }
+
+
                 }
             }
         } catch (Exception e) {