The notification service can be described as a messenger service responsible for handling email and SMS transactions. It enables an organisation's members (Staff and Customers) to get notified of events occurring on their accounts.
Navigation:
Children Display |
---|
Description
The notification service can be described as a messenger service responsible for handling email, push notifications and SMS transactions. It enables members (Staff and Customers) of a tenant to get notified of events occurring on their accounts.
It uses JMS Listeners to subscribe to event topics registered the system's message broker (ActiveMQ).
Once the message has been received, it determines the template, the gateway and the builds the content of the message.
Please consider contributing!
Service Roadmap/Feature
- I
mplement basic SMS and Email integrationInterface with TwilioGmail integration
Incorporate notification microservice into demo-server to enable testing.Basic Message TemplatingRest APIDocumentation
Add support for FINCN Mobile
- Implement FCM push notification with a multi-tenanted approach
- Resources: Official FCM Documentation, FCM implementation in Java,
- Implement FCM push notification with a multi-tenanted approach
- Replicate SMS/Email/Push Notifications functionalities for Portfolio/Office/Group/Employee Event Listener
- OTP through Push Notifications, SMS and Email
- Message Localisation
- Disable SMS and Email for specific users by using a custom field in customer
- Tenant Reputation Management
- Notification subscription and unsubscribe feature via SMS and email
- Message Templating
- Bulk SMS/Email/Push Notification
- Customized Bulk SMS
- Generic SMS
- Customized Messaging
- Templating
- Bulk SMS/Email/Push Notification
- Assess the feasibility of third-party integration with other messaging services
- Amazon SES Multitenant Solution
- Final test plan
Objectives for ongoing Iteration
Feature/Class | To Do: Features | Status |
---|---|---|
Rest Controller and Notification Manager |
|
|
Email Service |
|
|
Email Configuration Repository and schema |
|
|
SMS and Email Service |
|
|
SMS configuration Repository and schema |
|
|
Commands for SMS and Email Config and handlers |
|
|
Rest Controller and Notification Manager |
|
|
Templating Feature |
|
|
Create frontend in fims-web-app |
|
|
Authentication |
|
|
Objectives for 3rd Iteration
Completed |
---|
Implement SMS and Email functionality |
Incorporate notification microservice into demo-server |
Message Template |
Create Rest API Documentation |
Testing of SMS and Email from the web interface |
Other Resource
Building a notification service in a multi-tenanted service-oriented architecture can be very complex. Here are a few resources to help assess some of the complexities involved.
Event Listeners
This tentative document identifies and shortlists events which will be considered for the notification service. Under each microservice, is a list of events and each event will have a corresponding email and SMS message. Likewise, each event will have a default message and recipient associated with it.
Default Message: This is the default message which will be sent when that event occurs if no customized template has defined.
Default Recipient(s): This is the default recipient(s) who will receive the notification when the event occurs.
PS: The message samples listed are for demo purposes.
Identity Service: IdentityEventListener.java
Event: onCreateUser
Default Message:
Dear {{Name}},
This is to notify you that your account has been created.
Below are your MFI account details.
{{login address}}
{{password}}
Yours Sincerely
{{MFI}} team.
Default Recipient(s): Customer
Event: onChangeUserRole
Event: onChangeUserPassword
Event: onAuthentication
Office Service: OfficeEventListener.java
Event: onCreateEmployee
Default Message:
Dear {{Name}},
This is to notify you that you account has been created.
Below are your MFI account details.
{{login address}}
{{password}}
Use this link to login to your account.
{{endpoint}}
Yours Sincerely
{{MFI}} team.
Default Recipient(s): Staff member
Event: onUpdateEmployee
Event: onDeleteEmployee
Event: onSetContactDetail
Event: onDeleteContactDetail
Event: onCreateOffice
Event: onDeleteOffice
Event: onUpdateOffice
Customer Service: CustomerEventListener.java
Event: customerCreatedEvent()
Default Message:
Dear {{Customer Name}},
Your account with {{MFI}} has been successfully created at {{Office}}.
Thanks
Default Recipient(s): Customer
Event: customerUpdatedEvents
Event: customerActivatedEvent
Event: customerLockedEvent()
Event: customerUnlockedEvent()
Event: customerClosedEvent()
Event: customerReopenedEvent()
Event: addressChangedEvent()
Event: contactDetailsChangedEvent
[Suggestion]
Please share your opinion on whether a listener should be defined IdentificationCard and protrait related events. For instance identificationCardScanDeleteEvent or portraitPutEvent and portraitDeleteEvent
Accounting Service: AccountingEventListener.java
Event: onCreateAccount
Event: onChangeAccount
Event: onCloseAccount
Event: onLockAccount
Event: onUnlockAccount
Event: onReopenAccount
Event: onDeleteAccount
Portfolio Service: PortfolioEventListener.java
Event: onDeny
Event: onApprove
Event: onDisburse
Event: onAcceptPayment
Event: onCheckLate
Event: onMarkLate
Event: onMarkInArrears
Event: onWriteOff
Event: onClose
Event: onRecover
Event: onCreateProduct
Event: onChangeProduct
Event: onDeleteProduct
Event: onEnableProduct
Event: onGroupCreated
Event: onGroupActivated
Event: onGroupUpdated
Deposit Service: DepositEventListener.java
onAccrual
onDividendDistribution
Teller Service: TellerEventListener
Event: onCreate
Event: onChange
Event: onOpen
Event: onClose
Event: onAuthenticate
Event: onPause
Event: confirmTransaction
Event: onDeleteTeller
Event: onSaveDenomination
Cheque Service: ChequeEventListener.java
Event: onIssueCheques
Event: onChequeTransaction
Event: onChequeApproved
Event: onChequeCanceled
Payroll Service: PayrollEventListener
Event: onPostCollection
Reporting Service:
No listener will be implemented for the reporting microservice on less stated otherwise.
Web Interface
An interface to configure SMS and email frequency
An interface to configure organisation(s) SMS API
An interface to configure organisation(s) Email Gateway
Database Structure
Entity 1: sms_gateway_configurations
Id
identifier
organisation
auth_token
accountid
option
Entity 3: email_gateway_configurations
...
Id
...
identifier
...
host
...
port
...
username
...
app_id
...