Trigger based Data Events
In the FourVision Request Web App you can use Triggered Data Events from Dynamics 365 Finance and Operations (FNO) to update records on the tables of the WebApp, this feature is a replacement for "RealTime" lookups.
Triggered Data Events can be in rare occasions skipped by FNO. Ideally, this should always be used in combination with a Periodic sync to catch up on missed messages. For example, by scheduling a sync once a week to ensure the data in the webapp is not missing a record or update over a longer period of time.
The events are configured per data entity and message type. We have documented the data entities we currently support in the Request WebApp. During the implementation analysis you can decide what messages you want to use on what entities, you are able to choose to do only 3 entities via Data Events and others via RealTime or periodic sync only.
Real Time lookup
You must make sure to disable the RealTime lookup feature on tables you going enable Data Events as the feature is conflicting and you don't take the advantage of the Data Events on the Request forms when using RealTime lookup, The Realtime lookup access the FNO system directly from the form and cause loading delays when opening the form, replacing it with Data Events makes the user experience Mutch better and smoother as the form will respond faster; The Data Events are almost RealTime as we estimated that a message for a new or updated position will be handled within 60 seconds (most of the times faster) from when the change was made in the D365 FNO system, so the need to do a RealTime lookup for example to see a new created position is than not needed.
Integration points
Important to understand is the integration points of the solution:
- The OData integration point connecting directly from the FourVision WebApp to the FNO system using Data Entities
- The Data Event "Triggered Push" from Finance and Operations towards the Data Verse using Virtual Entities and CUD (Create, Update, Delete) Data Events.
- The Receiving message on the WebApp endpoint from the DataVerse back into the FourVision WebApp.
You can extend the above schema using Azure Event Grid or other message queue solutions, this is an optional to build to make a large configuration and ensure the tracking and convivence of delivering of the CUD messages.
Security and Endpoint setup
The integration is based on a generated connection string, this is configured in the Key-Vault of the environment and needs to be accessible by the Finance and Operations system to connect. If you are not using the HTTPS end point but another message service, you might need to configure an Azure Service Principal with the role Integrations on.
For Integrations with Data Events the Api key will be most of the times the system to implement due to the nature of the Api key and closed systems that connect with the web-app and require a quick integrations and low latency. (High volumes of create record messages that travels from FNO to the Web App would not like to do a OAUTH2 round trip for each record.)
To enable the FNO system to pull the active API Connection settings from the Web App environment you need to create a service principal for FNO and grant read rights to the secrets in the Vault.
In Dynamics Finance and Operations create the Data Event EndPoint with the created credentials of the Azure Service Principal like in this example:
Use the explicit "Key Vault secret name" 'DynamicsIntegrations' to be used to connect to the Request WebApp.
Enabling Data Events
After configuring the Endpoint you can enable the supported data events and actions to be send to the WebApp by selecting supported Data Events and Activate the integration on the created EndPoint from the "Data event catalog".
Supported Data Events
Below is an overview of supported Data Entities that can be used with the Data Events in the HR-Request Web App :
Business event ID | Name |
---|---|
DataEvent_BusinessProcessGroupAssignmentMemberEntity | Group assignment member (BusinessProcessGroupAssignmentMemberEntity) |
DataEvent_CurrencyEntity | Currencies (CurrencyEntity) |
DataEvent_DimAttributeOMCostCenterEntity | Cost centers (DimAttributeOMCostCenterEntity) |
DataEvent_DirNameAffixEntity | Name affixes (DirNameAffixEntity) |
DataEvent_DirPersonUserEntity | User to person relationship (DirPersonUserEntity) |
DataEvent_DirPartyContactV3Entity | Party contacts V3 (DirPartyContactV3Entity) |
DataEvent_HcmCompensationRegionEntity | Compensation regions (HcmCompensationRegionEntity) |
DataEvent_HcmFixedCompensationActionEntity | Compensation fixed action table (HcmFixedCompensationActionEntity) |
DataEvent_HcmJobCompensationEntity | Job compensation (HcmJobCompensationEntity) |
DataEvent_HcmCompFixedEmplEntity | Employee fixed compensation (HcmCompFixedEmplEntity) |
DataEvent_HcmCompFixedPlanTableEntity | Compensation fixed plan (HcmCompFixedPlanTableEntity) |
DataEvent_HcmContractorV2Entity | Contractor V2 (HcmContractorV2Entity) |
DataEvent_HcmEmployeeV2Entity | Employee V2 (HcmEmployeeV2Entity) |
DataEvent_HcmEmploymentV2Entity | Employment (HcmEmploymentV2Entity) |
DataEvent_HcmEmploymentTermEntity | Employment term (HcmEmploymentTermEntity) |
DataEvent_HcmJobEntity | Jobs (HcmJobEntity) |
DataEvent_HcmLoanItemEntity | Loan items (HcmLoanItemEntity) |
DataEvent_HcmPersonalContactPersonEntity | Worker personal contact person (HcmPersonalContactPersonEntity) |
DataEvent_HcmPositionDefaultDimensionDualWriteEntity | Position Default Dimensions Dual Write (HcmPositionDefaultDimensionDualWriteEntity) |
DataEvent_HcmPositionDurationEntity | Position durations (HcmPositionDurationEntity) |
DataEvent_HcmPositionHierarchyEntity | Position hierarchies (HcmPositionHierarchyEntity) |
DataEvent_HcmPositionTypeEntity | Position type (HcmPositionTypeEntity) |
DataEvent_HcmPositionV2Entity | Positions V2 (HcmPositionV2Entity) |
DataEvent_HcmPositionWorkerAssignmentV2Entity | Position worker assignments V2 (HcmPositionWorkerAssignmentV2Entity) |
DataEvent_HcmTitleEntity | Titles (HcmTitleEntity) |
DataEvent_HcmVariableCompensationAwardEntity | Employee variable compensation (HcmVariableCompensationAwardEntity) |
DataEvent_HcmWorkerBaseEntity | Base worker (HcmWorkerBaseEntity) |
DataEvent_HcmWorkerEnrolledBenefitEntity | Worker enrolled benefit (HcmWorkerEnrolledBenefitEntity) |
DataEvent_HcmWorkerPostalAddressV2Entity | Worker postal addresses V2 (HcmWorkerPostalAddressV2Entity) |
DataEvent_OMDepartmentV2Entity | Department (OMDepartmentV2Entity) |
DataEvent_OMLegalEntity | Legal entities (OMLegalEntity) |
DataEvent_SystemSecurityUserRoleEntity | System security user role organization (SystemSecurityUserRoleEntity) |
DataEvent_SystemSecurityUserRoleOrganizationEntity | System security user role organization assignment (SystemSecurityUserRoleOrganizationEntity) |