Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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! 

  1. Repository
  2. Drive Containing Relevant documents

Service Roadmap/Feature

  1. Implement basic SMS and Email integration
    1. Interface with Twilio
    2. Gmail integration
  2. Incorporate notification microservice into demo-server to enable testing.
  3. Basic Message Templating
  4. Rest API
    1. Documentation
  5. Add support for FINCN Mobile

    1. Implement FCM push notification with a multi-tenanted approach
      1. Resources: Official FCM DocumentationFCM implementation in Java
  6. Replicate SMS/Email/Push Notifications functionalities for Portfolio/Office/Group/Employee Event Listener
  7. OTP through Push Notifications, SMS and Email
  8. Message Localisation
  9. Disable SMS and Email for specific users by using a custom field in customer
  10. Tenant Reputation Management
    1. Notification subscription and unsubscribe feature via SMS and email
  11. Message Templating
    1. Bulk SMS/Email/Push Notification
      1. Customized Bulk SMS
      2. Generic SMS
    2. Customized Messaging
      1. Templating
  12. Assess the feasibility of third-party integration with other messaging services
    1. Amazon SES Multitenant Solution
  13. Final test plan

Objectives for ongoing Iteration

Feature/ClassTo Do: FeaturesStatus
Rest Controller and Notification Manager
  1. Add fetch operations
  •  Completed
Email Service
  1. Allow configuration of service after instantiation
  •  Completed
Email Configuration Repository and schema
  1. More query for update and delete
  •  Completed
SMS and Email Service
  1. Allow reconfiguration of service after instantiation
  •  Completed
SMS configuration Repository and schema
  1. More query for update and delete
  •  Completed
Commands for SMS and Email Config and handlers
  1. Update and delete commands
  •  Completed
Rest Controller and Notification Manager
  1. Restructure API Naming Conventions
  •  Completed
Templating Feature
  1. Create basic HTML templating feature with thymeleaf
  •  Completed
Create frontend in fims-web-app
  1. More query for update and delete
  •  Completed
Authentication
  1. Implement Permitted Feign Client Authentication
  •  Completed




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.

  1. Building scalable multitenant email sending programs

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

...