What do we want to achieve?

The goal of this change is to reduce the amount of messages users are getting by default.

Desire is to change the default system behavior so that the ‘default’ for a user is to get fewer messages.


Approach #1 (Consolidated message)

Overview

This page describes the design for supporting notification consolidation for the notification service. It is an output of the .

Pros

Cons

Class diagram

Tag

This new addition to the notification class would let us group notification together to be sent as a single, consolidated message later.

DigestConfiguration

Digest configuration will define how messages can be consolidated. The idea here is to let each of the services define possible ruling for the message digest. Each configuration will contain the following fields:

DigestSubscription

This entity would let each of the user to decide whether or not they would like to use each of the digest configurations.

Activity diagram

Below is the activity diagram describing how notification would deal with digesting notifications and sending them daily. It is split into 4 workflows (from left to right):

  1. Registering a digest configuration. This step is done by the service and provides possible notification consolidation options.
  2. A user subscribing to a specific digest configuration. From this step, the user will no longer receive the notifications for a specific tag as they come but in a form of a single, digested notification.
  3. Notification receiving a notification to send. This workflow deals with deciding whether to send the notification immediately or store it to be digested.
  4. Notification coursing through the digest configuration and sending messages for all the subscribers when the time is appropriate.

Approach #2 (Consolidated Message Opt-out)

Overview

With this approach, we're not implementing message consolidation in a way that we decide to either receive the consolidated message or individual messages. It lets the user decide on a per message-type basis which of them they want to receive.

The main focus here is on adding the ability to opt out of specific message types individually. On top of that, we would add new message types (that would serve as the consolidated messages) would be added to each of the services (requisition being the first one).

Example:

We have 2 message types: REQUISITION_APPROVAL and REQUISITION_APPROVAL_SUMMARY.

The first one is the notification we currently have implemented that informs the recipient about a specific requisition being approved.

The second one is a new notification type that sends a notification daily informing the recipient how many requisitions have been approved.

With this approach, the user can decide to opt into one, both or none message types so they can receive information for each requisition individually, a daily summary, both or none.

Pros

Cons

Class diagram

NotificationType

Class describing a single notification type. It is registered by each of the client services on startup.

Notification

Notification is extended with a single field called notification type, it is used by the notification service to define whether the message should be sent or not.

UserContactDetails

This class is extended by the list of notification that the related user want to be opted out.

Activity diagram