Response mapping using message type for API integrateSynchronous
The error message is added as a response to send back to the sender when inbound processing of the message is failed which contain the external Id and message raised by Salesforce. Asynchronous call where the response is coming back in the same request context is also added so the caller process will not be blocked and wait for the response. This communication is happening from SAP-PI to SFDC and back.
Enhance workflow view because of the hierarchical interface
The new enhancement is added and current workflow screen is enhanced to show the hierarchical view as the new message monitor. Hierarchy is between these interfaces to better understand that condition i.e. added by the user for the sub-interface and parent interfaces are related to each other in a parent-child relationship.
Configure the whole integration to SAP (direct) from Salesforce
SKYVVA ABAP wizard is created to do all configuration from the cloud e.g. from Salesforce. This function/wizard imports IDoc, BAPI, ABAP-Proxy, etc .. from SAP and is used to do mapping in skyvva. This comes as part of Inbound processing.
Send Salesforce CDC Change Event to the receiver through our outbound interface
The new event is added as part of this enhancement for the client to read changed record. The event is just a notification saying the data of the sObject Account has been changed. This technique can also be used to make a callback to Salesforce from the client if it gets a notification. So acknowledgment can be built with the external system.
The new version of integrating to speed up the processing
Adjustments to integration logic are made to improve processing so that data is not lost if memory is exhausted like in case of bulk processing. The new version will help in integrating faster and quicker with data safety.
Simplify Error handling for asynchronous outbound -BAPI to ABAP-Adapter
A new Service is implemented for direct coupling to SAP with SKYVVA__MESSAGEID
Enhance operation query to use free define target structure for mapping
Operation Query we can send data on to the receiver. Especially this is used with SAP-PO. With the operation query, user can add mapping and overwrite the value of the selected data from the database. If the user wants to send the JSON payload to SAP ABAP-Adapter where there is no mapping done again there the user cannot use the SAP structure because the target structure is always the sObject structure of the source sObject in the interface. Therefore user needs to map the result of the soql statement to the SAP structure created as message type before.
CDC – Support to sent message in case of Undelete
A message type is created for each table/views, bapi/rfc and IDoc. The name of the table/view, bapi/rfc and idoc is unique so that this field can be used as the external Id in the message type table. The new Istructure for that repository is created and used in MsgTypeEntry table. The table MessageTypeRel is not used because with SAP there is no reference to the existing table, bapi parameter or Idoc Segment. The facility is provided to delete the istructure fields and the msgtypfieldentry and recreate. To help this work the existing message type should be linked with the old Salesforce Id as the interface use old one.
Conversion table as mapping formula
Enhancement is added to convert a value from an ID to another ID. Currently, conversion can be done with CASE formula. A new formula function by passing the appropriate parameter to add a new value to the table and define the conversion rule using custom settings is introduced.
Activate and Deactivate the adapter
New field in the adapter like status is added which is a picklist like following:
Outbound processing logic needs to check the status of the adapter e.g. if it is active or inactive. There are situations where the customer wants to stop the adapter. Doing on the interface level is the wrong place. The correct place to do it is to deactivate the adapter.
What to do with the failed message with the same external Id?
Two new values are added along with existing to drop down of ‘What to do with the failed message?’ Overwrite failed message and delete pending. Merge failed message and delete pending Delete the failed message. And ‘Merged failed message’ is removed from the picklist. Currently pending messages are stored with same external id and that is corrected now. These messages are of no use and hence can be treated with newly added options. User doesn’t need to cancel and delete many anymore.
Publish Event using Skyvva interface
Creating an event can be done using the inbound or outbound interface. With the inbound interface, the user gets data from the outside and with this data, the user can create an event either into the Salesforce bus or Apache Kafka bus. Over the outbound interface, data is received from Salesforce and create the event in Salesforce bus or Kafka bus. New operation type called ‘Publish Salesforce Event’ and ‘Publish Kafka Event’ are added. With the operation ‘Publish Salesforce Event’, the event is created using apex internally to the Salesforce event bus.
Allow ping for soap, rest and all others adapter
Currently can ping sap-r/3 and sfdc2sappi adapter. New functionality is added which allows pinging soap, rest and all others adapter. Adapters from the Agent as a fil: FTP, sftp, JDBC have pinged this adapter through the new Agent where user can reach it as the listener through the public IP address. For the new camel-agent, we need to ping those adapters through the camel-agent.
SOQL Statement for the outbound interface can be empty
Currently, the SOQL statement needed to be specified for an outbound interface in the field Filter_Query__c’.
Now with this change, the SOQL statement is not mandatory. New adapter configuration to call a REST API using GET operation is added.
Display Columns Tree of the hierarchical XML in Manual Load
Currently, the table in the manual load cannot display the tree table of the hierarchical XML. So new table is built for display tree structure of the hierarchical XML.
The tree table has three columns such:
– checkbox: the checkbox shown in the parent node only.
– header name: this column is used to show the field name or node name.
– value: this column is used to show the data value of each field.
Make Change on Stop By Admin with Push Data In Batch Processing
Currently, data is pushed with Queue stays in Stop By Admin Status, so the queue is stopped by the Admin then the user cannot push the data into this queue. User is allowed to distribute the basket among those queues which are not stopped by the Admin.
Enhancing the MessageType validation for easier use
MessageType is prevented from changing repository and parent-child relationship from the different repository is also restricted. Also, Sequence Number and Level of Message Type are restricted so that value can not be null. Enhancement is made in such a way that if the value is kept null then the system will auto-generate the sequence number and level. Validation added to MessageType Name and it cannot contain special character and space.
By-passing message layer in any case
With the batch processing, we have introduced a so-called batch-optimize mode “Use Batch Optimized Mode” where in combination with the flag “Don’t persist message” we have no DB-operation anymore. just process the business record and have only DB-Operation with the business record and not with our SKYVVA massage table. Thus the processing speed is very high and also there is no pending database record at Salesforce backend side anymore. This is a perfect mode for having speed in the processing. With this new flag, we will not create a message in the database. It will dominate the interface mode e.g. whether it is synchronous or asynchronous and whether the flag “Don’t persist message’ is checked or not. With this flag, we provide a new option four our customer to by-pass e.g. not to use the massage table to keep the message.
New field External Message Id in the massage table
New field “<SKYVVA_EXTERNAL_ID__c>” is added to store the external message Id. Message payload must be set a special field SKYVVA__EXTERNAL_SYSTEM_ID. Sap-PO message Id is stored into a field where user can search and reference later. This field is not the same as the business record external Id which is used to set on the interface as the external Id or in the mapping. This field is only the technical field which is the Message-Id of the external system.
Add new field ‘Comment’ on the message monitor to filter the comment field
A new field ‘Comment’ on the message monitor is added so when the text is entered it should show all message which contains this text. So user can search not with the equals operator but with the contain operator of text.
Option to exclude Interface name on the message search page
When searching for messages we have option to include particular Interface name in the filter. Option to exclude Interface is introduced so that all the message other than excluded Interface will be searched.
The option can be a select box to select Include or Exclude before Interface selection. The default will be Include. Also, Interface select box can be the multi-select box. So the user can select multiple interfaces to include or exclude.
Changed option to exclude in Message Monitoring for 3 places are:
-for Message Status
2 components are:
-Message Board (Old)
Message monitoring- Comment field in a search filter to search message by comment
New field to add comment data and capability to search messages by entering error text displayed in the comment field is added.
This will allow the user to search for a particular failed message from 2000 messages of same external id. User can also search for overall failed messages with and without single external id.
Related To link on the message monitor
The logic for the link “Related To” is updated for both the cases i.e. if the inbound message is successful or not and there is External ID exists or not. Message processing is based on the external Id and Salesforce Id. Currently the link “Related To” exists when the message is processed successfully however when the message fails there is no link.
Related Link as a formula field which is defined based on application id value while posting application object (insert/update/upsert). If the message gets failed and Related to link will be defined to reference access to application object then update action is performed.
Filter scheduler by its status
Currently, there are two tabs for viewing the available scheduler i.e. the Scheduler tab inside integration and a global tab ‘Scheduler’ with different filter field. User has many schedulers that want to see only active e.g. Running scheduler or which how many and which scheduler are stopped. A field is needed to enter the status of the job. This field is multi-picklist where the user can put one or more status for filtering.
This filter is added and applied to two screens.
Three option for user filter field as bellow:
1. – All-: Use for filter field all such as Running, Stopped and Not Running.
2. Stopped: Use for filter field Stopped It’s mean user that stopped scheduler while running scheduler.
3. Running: Use for filter field Running Its mean user that starts the scheduler.
Add new filter on the license tab key to select users
currently on the license tab, only the active users are shown. The customer wants to add a license for new users but it was difficult if the user number is big and have to scroll long and lose the overview. Therefore filter is needed for the user who still doesn’t have a license key and a picklist field ‘Type of user’ where the user can select the following picklist:
- None = showing on our license tab only the active users
- The user without a license key = showing on our license tab for the active users and user who still doesn’t have a license key
- Inactive users = showing on our license tab only the Inactive users
Separate Batch and Bulk between Processing and Reprocessing on Functional Category
Two Separate Batch processing and Bulk Reprocessing on Functional Category are added with IntegrateBulk_Process and IntegrateBulk_Reprocess option respectively.
Operation type = Apex Class to execute the post-processing after the mapping step
To have more power in handling the logic than just doing the 3 database operation (upsert, insert, update, delete) logic is implemented to execute the auto-launch flow instead of the database operation. The message is passed to the auto-launch flow and in the flow, the user handles themselves the database operation and other business logic. The user does the business processing using an apex class.
When push data is performed by Manual Load the message is Completed as on custom class = “Comment success form custom Apex Class” is written.
Send Salesforce CDC data change to the external client without having the CometD support
Streaming API using PushTopic, in the PushTopic we can define the SOQL to get only the data records where the fields which we have specified in the SOQL statement has been changed. The PushTopic is the most accurate technique to capture changed based on fields. User can combine the Salesforce CDC with the SKYVVA CDC as CDC has the disadvantage in detecting the change on field level. Salesforce CDC is detected accurate changes on field level however Can only send single records in real-time. Advantages od SKYVVA CDC are can send the record as a single message in real-time (apex trigger, process builder), can send many records in package using a separate scheduler (CDT) and support scheduling mode e.g. send at a certain time only. However, change detection is not accurate enough because it uses only the LastModifiedDate to detect the change. Therefore for the detecting logic, the Salesforce CDC is used and for the transferring the record to the receiver CDT is used.
Using apex trigger to consume the CDC event or platform event to create CP records
Salesforce provides with CDC a notification or event when a record is changed. For the platform event, a process can create it using REST API from the external client or use apex to create from inside Salesforce. The change event object like AccountChangeEvent or ContactChangeEvent and also custom created event table are shown correctly on the outbound interface in the mapping tool. With New Feature Salesforce allows CometD client to filter event when they subscribe to the event. But is this also possible for the subscriber which are not CometD client like Process Builder, Flow, and Apex trigger. To consume the CDC event or platform event to create CP records apex trigger is used.
Add filter condition on a lookup field in Metadata
The new filter is added to lookup field on IStructure Repository and MessageType. When create or edit MsgType, in the Parent field should filter the only MsgType from current IRepo. When create or edit IStructure Repository, in Parent field should filter only IStructure Repository from current MetaData.
Add the ID of parent interface into the parent interface field in child interface
The Child Interface is generated automatically with do tree mapping and add the ID of parent interface into the parent interface field in child interface. Now it shows parent interface ID in field parent interface in child interface.
Show all messages from the basket in History Basket
In order to search message base on basket name, the message table must have a field BasketName__c which is stored basket name after processing. So you the user can input basket name in the filter to search. Now the filter is added to filter all messages which processed from the basket stayed in History Basket to show in the Message Monitoring as basket stayed in Working Basket.
Create a link for the failed message in pending message in the message detail view
A link for the failed message name in the pending message detail to jump to a failed message page is added. Mouseover with message will have 2 links one is a popup and one is a link to message details by message name link.
On mouseover: it will display blue link color to black link color. In the case of 2 links with a pending message that has the name of message, so it will message name still blue color and the other text it will black link color.
On click. if click the black link, so it will popup comment. When clicked the blue link on message name, so it will get popup comment and link to message details name.
Change section Message Processing Step to Custom Plug-in to SKYVVA Processing Block
Added multi-picklist value on Initialization Query Section such as Label Name of Multi Picklist = Custom Block to Replace SKYVVA Block and And new picklist value ‘Before Processing’ Also changed Label Name Message Processing Step to Custom Plug-in to SKYVVA Block.
Create new fields in AgentSetting and AgentProperty
New fields in AgentSetting and AgentProperty are added. Object AgentSetting__c have new field below:
1- Description__c : Description of the connection to the Agent, SAP or other adapter instance.
2-Type__c : Application system such as SAP, Mule, Microsoft Dynamics, etc..
Create MsgType base on the Open API 3.0 file format
Most of the REST API still use the Open API 2.0 (Swagger) format, however, we still need to prepare and support the new version of the Open API specification. The Open API 3.0 is based on the previous version with some simplification yet important change that affect the parsing function so it needs to be able to handle both cases. Msgtype is created in Open Api 3.0 file format.
Implement SKYVVA Trigger to support with the lightning version by using Quick Action
The feature has implemented a tool to generate a script of the lightning component to use with quick action instead of the button as lightning version does not support with a custom button. Two text area for generate text of component and controller js are added. Currently, there 5 modes SYNCH, FUTURE, BATCH, QUEUEABLE, and AUTO are working invokeCallOut2. So QUEUEABLE and AUTO are added into Trigger Mode picklist as well.
Integration and Interface Overview tab on Agent Control Board with LWC
The new tab is added on Agent Control Board with LWC to save and update:
Enhanced views and save integration, interface into salesforce from integration and interface tab in Agent Control Board.