Vendor Notification Topics & Avro's
There are different types notifications in vendor modernization
- Workflow Notification
- Email Notification
- Validate Notification
- Duplicate vendor Notification
Workflow Notification:
In the vendor journey, there are different approvals required to onboard a vendor. In each workflow stage, we need to notify the procurement team and data steward based on the approval process.
Email Notification:
In the Vendor creation/update flow, we need to send an email notification to the procurement team, Data steward, and supplier(If Digital journey) to know the vendor's status.
Validate Notification:
In the upsert vendor, we need to validate the input data. If we find any validations we need to publish those validation errors to the notification topic.
Duplicate vendor Notification:
In the Vendor create/update case we need to notify using duplicate notification.
Draft Version of Vendor Notification’s:
Use cases for Notifications:
-
Notification For validations: After consuming the data from topic we need to check the validation errors, if we found validation errors we need send to Notification topic
-> If only validation errors
{
"header": {
"correlationId": "jhg67-dsajasd-3asda",
"eventType": "validation",
"createdBy": "n.n.reddy@maersk.com",
"createdTimestamp": 78987667876,
"lastUpdatedBy": "k.rao@maersk.com",
"lastUpdatedTimestamp": 8656788766
},
"vendorCode": "76545678",
"entityStatus": "Active",
"errorDetails": {
"message": "request failed with validation errors",
"detailedErrors": [
{
"field": "organizationName",
"value": "MAERSK &%***",
"message": "organization name must match [A-Z]$ pattern"
}
]
}
}
-> If its failed with server issue
{
"header": {
"correlationId": "jhg67-dsajasd-3asda",
"eventType": "validation",
"createdBy": "n.n.reddy@maersk.com",
"createdTimestamp": 78987667876,
"lastUpdatedBy": "k.rao@maersk.com",
"lastUpdatedTimestamp": 8656788766
},
"vendorCode": "76545678",
"entityStatus": "Active",
"errorDetails": {
"message": "unable to proceed with validation checks due to <reason>",
"detailedErrors": null
}
}
- Notification for duplicate vendors:
In Vendor journey after validation checks , we need to check duplicate as well. if we found duplicate vendors
{
"header": {
"correlationId": "jhg67-dsajasd-3asda",
"eventType": "validation",
"createdBy": "n.n.reddy@maersk.com",
"createdTimestamp": 78987667876,
"lastUpdatedBy": "k.rao@maersk.com",
"lastUpdatedTimestamp": 8656788766
},
"vendorCode": "76545678",
"entityStatus": "Active",
"duplicateVendors": [
{
"vendorId": "IN85678876",
"organizationName": "INDIAN MAERSK GLOBAL",
"status": "Active",
"cityCode": "MUM123",
"iso2CountryCode": "IN"
},{
"vendorId": "IN8756788",
"organizationName": "MAERSK GLOBAL",
"status": "Active",
"cityCode": "PUN123",
"iso2CountryCode": "IN"
},
]
}
-
Email Notification will be sent based on the below conditions. If the Vendor save into staging without any validations and duplication erros, then --> If non Digital flow, need to inform Procurement team and DS --> if Digtal journey ,then we need to inform Procurement team , DS and supplier
Note: In below notification we need to put the email ids based on above conditions
If it is digital Journey:
{
"header": {
"correlationId": "jhg67-dsajasd-3asda",
"eventType": "email",
"createdBy": "n.n.reddy@maersk.com",
"createdTimestamp": 78987667876,
"lastUpdatedBy": "k.rao@maersk.com",
"lastUpdatedTimestamp": 8656788766
},
"vendorCode": "76545678",
"emailDetails": {
"subject": "Vendor Creation!!",
"reciepints": [
{
"type": "SUPPLIER",
"value": "supplier@maersk.com"
}
],
"messageDetails": [
{
"type": "SUPPLIER",
"value": "Updated tax details"
}
],
"workflowDetails": {
"status": "pending/approved/rejected/resubmit",
"message": "<workflow comments>",
"lastUpdatedTimestamp": "<last updated date>",
"lastUpdatedBy": "<last updated by>"
}
}
}
If it is non-digital Journey:
{
"header": {
"correlationId": "jhg67-dsajasd-3asda",
"eventType": "email",
"createdBy": "n.n.reddy@maersk.com",
"createdTimestamp": 78987667876,
"lastUpdatedBy": "k.rao@maersk.com",
"lastUpdatedTimestamp": 8656788766
},
"vendorCode": "76545678",
"emailDetails": {
"subject": "Vendor Creation!!",
"reciepints": [
{
"type": "PROCURMENT",
"value": "procuerment@maersk.com"
}
],
"messageDetails": [
{
"type": "PROCUERMENT",
"value": "Please update the tax details"
}
],
"workflowDetails": {
"status": "pending/approved/rejected/resubmit",
"message": "<workflow comments>",
"lastUpdatedTimestamp": "<last updated date>",
"lastUpdatedBy": "<last updated by>"
}
}
}
- If Vendor is landed into workflow we need to call workflow notification with complete details
{
"header": {
"correlationId": "jhg67-dsajasd-3asda",
"eventType": "workflow",
"createdBy": "n.n.reddy@maersk.com",
"createdTimestamp": 78987667876,
"lastUpdatedBy": "k.rao@maersk.com",
"lastUpdatedTimestamp": 8656788766
},
"vendorDetails": {
"vendorCode": "",
"organizationName": "R & M",
"isoCountryCode": "PA"
},
"workflowDetails": {
"workflowProcessId": "71c40832-16bc-11ef-9872-22c77187d806",
"workflowName": "Vendor_workflow",
"differences": [
{
"field": "organizationName",
"previous": "MAERSK India",
"current": "MAERSK GLOBAL"
}
],
"workflowStates": [
{
"taskId": "90c40832-16bc-11ef-9872-22c77187d806",
"name": "Data Steward",
"status": "APPROVED",
"approverComments": [
{
"lastUpdatedTime": 1716238493005,
"comment": "Tax is valid"
}
]
},
{
"taskId": "89c40832-16bc-11ef-9872-22c77187d806",
"name": "Procurment Approval",
"status": "PENDING",
"approverComments": null
}
]
}
}
Flow Diagrams for Notifications: